본문 바로가기

프로그래머스(Java)/Level 1

(34)
[프로그래머스] 달리기 경주 코드 힌트HashMap 활용:2중 for문을 사용하면 시간 초과가 됩니다. 빠르게 탐색을 할 수 있는 방법으로 hashMap을 사용합니다. HashMap map을 사용하여 각 플레이어의 이름과 초기 순위를 저장합니다.호출된 플레이어의 이름을 키로 하여 순위를 빠르게 조회할 수 있습니다.플레이어 순위 변경:players 배열의 순서를 변경합니다.호출된 플레이어와 그 앞의 플레이어의 위치를 교환하고, 이에 따라 map에서 각 플레이어의 순위도 업데이트합니다.반복문을 통한 처리:callings 배열을 순회하면서 각 호출된 플레이어의 순위를 변경합니다.호출된 플레이어의 이름을 키로 하여 map에서 해당 플레이어의 현재 순위를 조회하고, 이를 기반으로 위치 변경을 수행합니다. 정답은 더보기 클릭더보기import ..
[프로그래머스] 수박수박수박수박수박수? 코드 힌트StringBuilder 사용:문자열을 자주 수정하는 경우, StringBuilder를 사용하면 효율적입니다. 이는 문자열의 수정 작업에서 StringBuilder가 더 빠르고 메모리 효율적이기 때문입니다.String으로 하셔도 괜찮습니다.for문 사용:for 문을 사용하여 0부터 n까지 반복합니다. 이 반복문은 문자열의 각 자리에 "수"와 "박"을 번갈아 가며 추가하기 위해 사용됩니다.조건문 사용:if 조건문을 사용하여 현재 인덱스 i가 짝수인지 홀수인지를 검사합니다.짝수일 경우 홀수일 경우 StringBuilder에 추가합니다.i % 2 == 0 조건은 i가 짝수임을 의미하며, 짝수일 때 "수"를 추가합니다.그렇지 않으면 "박"을 추가합니다.StringBuilder 결과 반환:모든 반복이 끝..
[프로그래머스] 핸드폰 번호 가리기 코드 힌트StringBuilder 사용:문자열을 자주 수정하는 경우, StringBuilder를 사용하면 효율적입니다. 물론 String을 사용하셔도 상관없는 문제이지만 StringBuilder 연습도 같이 하면 좋을 것 같습니다.문자열 길이 확인:전화번호의 길이를 확인하여 반복문을 통해 각 문자를 처리합니다. 반복문은 전화번호의 길이만큼 실행됩니다.조건문 사용:조건문을 사용하여 마지막 4자리가 아닌 경우에는 '*'를 추가하고, 마지막 4자리는 원래 숫자를 그대로 추가합니다.StringBuilder 결과 반환:모든 문자에 대해 처리가 끝난 후, StringBuilder 객체를 문자열로 변환하여 반환합니다. StringBuilder의 toString() 메서드를 사용합니다.메소드 활용하여 문제풀기:for ..
[프로그래머스] 평균 구하기 코드 힌트배열 순회 및 합 계산:주어진 배열 arr의 모든 요소를 순회하면서 합을 계산합니다. 이는 단순한 반복문을 통해 이루어집니다.평균 계산:배열의 모든 요소의 합을 배열의 길이로 나누어 평균을 계산합니다.결과 반환:계산된 평균 값을 반환합니다.  정답은 더보기 클릭더보기class Solution { public double solution(int[] arr) { // 평균을 저장할 변수 선언 double result = 0; // 배열의 합을 저장할 변수 선언 double sum = 0; // 배열의 모든 요소를 순회하며 합을 계산 for (int i = 0; i
[프로그래머스] 서울에서 김서방 찾기 코드 힌트배열 순회 및 검색:주어진 배열 seoul을 순회하면서 "Kim"의 위치를 찾습니다. 이는 단순한 선형 탐색을 통해 이루어집니다.인덱스 저장 및 루프 종료:"Kim"을 찾으면 해당 인덱스를 저장하고 break 문을 사용하여 루프를 종료합니다.출력하기:String.format 메서드를 사용하여 return 할 수 있습니다."김서방은 " + index + "에 있다"; 로도 출력할 수 있습니다. 정답은 더보기 클릭더보기class Solution { public String solution(String[] seoul) { // "Kim"의 인덱스를 저장할 변수 선언 int index = 0; // seoul 배열을 순회하면서 "Kim"을 찾기 ..
[프로그래머스] 숫자 짝꿍 코드 힌트문제 설명주어진 두 문자열 X와 Y에서 공통으로 포함된 숫자들로 만들 수 있는 가장 큰 숫자를 구하는 문제입니다.자릿수 배열 생성각 문자열에서 숫자의 빈도를 저장할 배열을 생성합니다.int[] x = new int[10]; : X 문자열에 대해 0부터 9까지 각 숫자의 빈도를 저장하는 배열입니다.빈도 계산X와 Y 문자열의 각 자릿수를 배열에 저장합니다.X 문자열의 경우: for (int i = 0; i Y 문자열의 경우: for (int i = 0; i 최댓값 문자열 생성9부터 0까지 배열을 돌면서 공통으로 존재하는 숫자를 문자열로 저장합니다.숫자가 큰 순서대로 비교하여 문자열에 저장하면 최댓값을 만들 수 있습니다.StringBuilder 사용문자열을 효율적으로 저장하기 위해 StringBuil..
[프로그래머스] 대충 만든 자판 코드 힌트targets 배열에서 각 target 문자열을 하나씩 추출합니다.for 루프를 사용하여 targets 배열의 각 요소에 접근합니다.각 target 문자열에서 문자를 하나씩 추출합니다.toCharArray() 메소드를 사용하여 문자열을 문자 배열로 변환하고, for-each 루프를 사용하여 각 문자에 접근합니다.keymap 배열에 있는 문자열에 대해 indexOf()를 사용하여 최소 위치를 구합니다.각 keymap 문자열에 대해 indexOf() 메소드를 사용하여 문자의 위치를 찾습니다.찾은 위치 중 최소값을 저장합니다.keymap을 모두 방문했을 때 target 문자열을 완성할 수 없다면 -1을 저장합니다.만약 문자를 keymap에서 찾을 수 없으면 결과 배열에 -1을 저장합니다. 정답은 더보..
[프로그래머스] 제일 작은 수 제거하기 힌트배열 크기 체크: 배열의 크기가 1일 때 특별히 처리해야 합니다.최소 값 인덱스 찾기: 배열을 순회하여 최소 값을 찾고 그 인덱스를 기록합니다.결과 배열 생성: 최소 값을 제외한 나머지 원소를 담을 배열을 생성합니다.값 복사: 최소 값의 인덱스를 제외하고 나머지 원소를 결과 배열에 복사합니다.  정답은 더보기 클릭더보기class Solution { public int[] solution(int[] arr) { // 배열 크기가 1일 때 if (arr.length == 1) { arr[0] = -1; // 배열의 유일한 원소를 -1로 설정 return arr; // 변경된 배열 반환 } // 최소 숫자가 있는..