본문 바로가기

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

(34)
[프로그래머스] 나머지가 1이 되는 수 찾기 힌트범위 설정: 2부터 n-1까지의 숫자에 대해 나머지를 검사합니다. 1은 모든 수의 약수이므로 제외하고, n 자신도 제외합니다.나머지 연산: n % i == 1 조건을 만족하는 i를 찾습니다.최소값 찾기: 조건을 만족하는 가장 작은 i를 찾으면 바로 break로 반복을 종료하여 효율성을 높입니다.반환 값: 조건을 만족하는 첫 번째 i를 result에 저장하고 반환합니다. 정답은 더보기 클릭더보기class Solution { public int solution(int n) { int result = 0; // 결과를 저장할 변수 초기화 // 2부터 n-1까지의 숫자 i에 대해 반복 for (int i = 2; i
[프로그래머스] 콜라츠 추측 힌트무한 루프와 조건문: 무한 루프를 사용하고 조건문을 통해 특정 상황에서 루프를 종료하는 구조입니다.작업 횟수: 각 작업마다 result를 증가시켜 작업 횟수를 기록합니다.짝수와 홀수 처리: num이 짝수인지 홀수인지에 따라 다른 처리를 합니다.최종 반환 값: 작업이 성공적으로 끝나 num이 1이 되면 result를 반환하고, 그렇지 않으면 -1을 반환하여 작업이 실패했음을 나타냅니다.   정답은 더보기 클릭더보기class Solution { public int solution(long num) { int result = 0; // 작업 횟수를 저장할 변수 while (true) { // num이 1이 되거나 작업 횟수가 500 이상이 되..
[프로그래머스] 가장 많이 받은 선물 코드 힌트1. 친구들의 인덱스 저장HashMap을 사용하여 친구 이름을 인덱스로 저장합니다.이렇게 하면 친구의 이름을 인덱스로 빠르게 변환할 수 있습니다.2. 선물 지수 배열 만들기각 친구가 받은 선물의 지수를 저장할 배열 giftIndex를 만듭니다.선물을 줄 때마다 주는 사람의 지수를 증가시키고 받는 사람의 지수를 감소시킵니다.3. 선물 주고받은 횟수 기록친구 간의 선물 주고받은 횟수를 기록할 2차원 배열 recode를 만듭니다.각 친구가 서로 몇 번씩 선물을 주고받았는지 기록합니다.4. 선물 지수 및 주고받은 횟수 업데이트주고받은 선물 정보를 바탕으로 각 친구의 선물 지수와 주고받은 횟수를 업데이트합니다.5. 다음 달 받을 선물 수 계산각 친구가 다음 달에 받을 선물 수를 계산합니다.친구 간의 선물..
[프로그래머스] 자연수 뒤집어 배열로 만들기 코드 힌트첫 번째 접근 방식: 나머지 연산자를 활용해서 문제 풀기숫자 n의 길이를 구하기숫자 n을 문자열로 변환하여 그 길이를 구합니다.결과 배열 생성구한 길이만큼의 배열을 생성합니다.숫자의 각 자리수를 배열에 저장하기for 루프를 사용하여 숫자의 각 자리수를 배열에 저장합니다.n % 10을 사용하여 현재 자리수를 구하고, n /= 10을 사용하여 다음 자리수로 이동합니다.결과 배열 반환최종적으로 결과 배열을 반환합니다.두 번째 접근 방식: n을 문자열로 활용하여 문제 풀기숫자 n을 문자열로 변환숫자 n을 문자열로 변환합니다.문자열 뒤집기문자열을 뒤집기 위해 StringBuilder를 사용합니다.문자열을 배열로 변환뒤집은 문자열을 각 문자를 분리하여 문자열 배열에 저장합니다.문자열 배열을 정수 배열로 변..
[프로그래머스] 자릿수 더하기 코드 힌트정답을 풀 수 있는 2가지 방법문자열로 변환하여 한 자리씩 더하는 방법:숫자를 문자열로 변환하세요.변환한 문자열의 각 문자를 하나씩 순회하면서 숫자로 바꾸고, 이를 모두 더하세요.10으로 나머지를 구하는 방식:주어진 숫자를 10으로 나눈 나머지를 구하세요. 이는 숫자의 마지막 자릿수를 구하는 방법입니다.이 나머지를 결과에 더한 후, 숫자를 10으로 나누어 다음 자릿수를 처리하세요.이 과정을 숫자가 0이 될 때까지 반복하세요. 더보기1. 문자열로 변환하여 구하는 방법public class Solution { public int solution(int n) { int result = 0; // 숫자를 문자열로 변환 String str = St..
[프로그래머스] 문자열 내 p와 y의 개수 코드 힌트문자열 변환: 먼저 문자열 s를 모두 소문자로 변환하여 'P'와 'p', 'Y'와 'y'를 동일하게 처리할 수 있습니다.반복문: for 반복문을 사용하여 문자열의 각 문자를 하나씩 검사합니다.조건문: if-else 조건문을 사용하여 문자가 'p'인 경우 count를 증가시키고, 'y'인 경우 count를 감소시킵니다.결과 반환: 마지막으로 count가 0인지 확인하여 'p'와 'y'의 개수가 동일한지 여부를 반환합니다.  정답은 더보기 클릭 더보기class Solution { boolean solution(String s) { // 'p'와 'y'의 개수를 세기 위한 변수 int count = 0; // 문자열을 모두 소문자로 변환 ..
[프로그래머스] 신규 아이디 추천 힌트정규식을 활용이 문제를 쉽게 풀기 위해서는 정규식과 replaceAll() 메서드를 잘 활용해야 합니다. 정규식을 통해 문자열을 간편하게 수정할 수 있습니다.규칙의 순서대로 풀기코드의 순서를 규칙에 맞게 작성해야 합니다. 1단계부터 7단계까지 주어진 규칙을 순서대로 처리하지 않으면 오류가 발생할 가능성이 높습니다. 각 단계를 정확히 이해하고 차례로 적용하세요. 정답은 더보기 클릭 더보기class Solution { public String solution(String new_id) { // 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. String result = new_id.toLowerCase(); // 2..
[프로그래머스] 체육복 코드 힌트 학생 배열 초기화:모든 학생의 체육복 개수를 저장할 배열을 생성하고, 각 요소를 1로 초기화합니다.배열을 초기화하는 방법으로 for문을 사용해 각 요소에 1을 넣거나, Arrays.fill(배열, 1)을 사용할 수 있습니다.잃어버린 체육복 반영:lost 배열을 순회하며, 해당 학생의 체육복 개수를 1 감소시킵니다.여벌 체육복 반영:reserve 배열을 순회하며, 해당 학생의 체육복 개수를 1 증가시킵니다.체육복 빌려주기:학생 배열을 순회하며, 체육복이 2개인 학생을 찾습니다.해당 학생의 왼쪽 또는 오른쪽 학생이 체육복이 없는 경우, 체육복을 빌려줍니다.체육복을 가진 학생 수 계산:학생 배열을 순회하며, 체육복을 가지고 있는 학생 수를 계산하여 result에 저장합니다.  정답은 더보기 클릭더보..