본문 바로가기

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

(93)
[프로그래머스] 약수 구하기 코드 설명리스트 초기화약수를 저장하기 위해 리스트를 초기화합니다.반복문을 통해 1부터 n까지 순회1부터 n까지의 모든 수를 확인합니다. 약수 확인n % i == 0 조건을 통해 i가 n의 약수인지 확인합니다.i가 n의 약수라면 리스트에 추가합니다.리스트를 배열로 변환리스트의 크기만큼의 배열을 초기화합니다.리스트의 요소를 배열로 복사합니다.배열 반환약수 배열을 반환합니다.코드 힌트리스트 사용 이유: 리스트는 크기가 동적으로 변할 수 있어 약수를 저장하기에 적합합니다.반복문과 조건문: 반복문을 사용하여 모든 수를 순회하고, 조건문을 통해 약수인지 확인합니다.배열 변환: 최종적으로 리스트를 배열로 변환하여 반환합니다. 정답은 더보기 클릭더보기더보기import java.util.*;class Solution {..
[프로그래머스] 수열과 구간 쿼리 4 코드 힌트queries 배열에 있는 배열 [s, e, k]를 꺼내온다각 query마다 s 각 쿼리에서 시작 인덱스(s)부터 종료 인덱스(e)까지의 범위를 순회하면서, 해당 인덱스(i)가 k의 배수인지 확인합니다. 만약 i가 k의 배수라면 arr[i] 값을 1 증가시킵니다.추가 설명i % k == 0의 조건을 사용하여 i가 k의 배수인지를 확인합니다. 이 조건이 참이면 해당 인덱스의 배열 값을 1 증가시킵니다.최종적으로 변경된 배열을 반환합니다.예시queries 배열:[0, 4, 1]: 0에서 4까지 모든 인덱스가 1의 배수이므로 모든 요소에 1을 더함.[0, 3, 2]: 0에서 3까지 인덱스 중 2의 배수는 0과 2. 따라서 arr[0]과 arr[2]에 1을 더함.[0, 3, 3]: 0에서 3까지 인덱스..
[프로그래머스] 문자열 뒤집기 코드 힌트:substring() 메서드 사용하기String을 for문으로 돌면서 해도 좋지만, 쉽게 문자를 자르는 방법인 substring() 메서드를 사용하면 더 간편합니다.s~e번째까지 문자를 뒤집습니다StringBuilder의 reverse() 메서드를 사용하거나 for문을 사용하여 문자열을 뒤집을 수 있습니다. 정답은 더보기 클릭더보기1. String, substring()을 사용하기class Solution { public String solution(String my_string, int s, int e) { String result = ""; // 결과 문자열에 시작 인덱스 s 이전의 문자열을 추가 result += my_string...
[프로그래머스] 배열 회전시키기 문제 풀이 힌트결과를 저장할 배열 생성:result 배열을 입력 배열 numbers와 동일한 크기로 초기화합니다.방향이 "right"인 경우:입력 배열의 마지막 원소를 result 배열의 첫 번째 위치에 저장합니다.나머지 원소들을 오른쪽으로 한 칸씩 이동합니다.예를 들어, numbers[0]는 result[1]에 저장됩니다.방향이 "left"인 경우:입력 배열의 첫 번째 원소를 result 배열의 마지막 위치에 저장합니다.나머지 원소들을 왼쪽으로 한 칸씩 이동합니다.예를 들어, numbers[1]는 result[0]에 저장됩니다.다른 방법으로 "deque"를 사용 더보기배열을 이용한 풀이class Solution { public int[] solution(int[] numbers, String di..
[프로그래머스] 369게임 문제 풀이 힌트숫자를 문자열로 변환:주어진 숫자를 문자열로 변환하여 각 자릿수를 쉽게 탐색할 수 있습니다.String.valueOf(order)를 사용하여 숫자를 문자열로 변환합니다.각 자릿수 탐색:문자열로 변환된 숫자를 toCharArray()를 사용하여 문자 배열로 변환합니다.for (char c : String.valueOf(order).toCharArray())를 사용하여 각 자릿수를 탐색합니다.혹은 for (int i = 0; i 조건 검사:각 자릿수가 '3', '6', '9'인지 확인합니다.if (c == '3' || c == '6' || c == '9') 조건문을 사용합니다.카운트 증가:조건에 맞는 경우 결과 카운트를 증가시킵니다.result++를 사용하여 카운트를 증가시킵니다.정답은 더보기..
[프로그래머스] 특별한 이차원 배열2 2중 for문 사용하기for (int i = 0; i arr[i][j] 와 arr[j][i] 비교하기다르다면 false 또는 0을 반환하기 이 문제의 목표는 주어진 2차원 배열이 대칭인지 확인하는 것입니다. 대칭이란, 배열의 요소 arr[i][j]와 arr[j][i]가 항상 동일해야 함을 의미합니다. 이 특성을 확인하기 위해 2중 for문을 사용하여 모든 요소를 순회하면서 비교합니다.만약 한 쌍이라도 다른 값이 발견되면, 배열은 대칭이 아니므로 0을 반환하고, 모든 비교가 통과되면 1을 반환합니다.  정답은 더보기 클릭더보기class Solution { public int solution(int[][] arr) { // 2차원 배열의 모든 요소를 확인하기 위한 2중 for문 ..
[프로그래머스] 안전지대 문제 풀이 힌트:이중 for 문을 사용하여 보드의 각 위치 (i, j)에 있는 요소가 0인지 확인합니다. 그리고 인접한 모든 요소들이 0인지를 검사하여 모두 0일 때 해당 위치를 안전지대라고 할 수 있습니다.이 힌트를 보러 오신 분들은 아마 인접한 요소들을 탐색하는 방법을 잘 모르기 때문일 것입니다. 예를 들어, (0, 0) 위치에서는 (0, 0), (0, 1), (1, 0), (1, 1)만 비교하면 되지만, (1, 1) 위치에서는 (0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2) 총 9개를 비교해야 하기 때문입니다.안전한지를 확인하는 방법:다른 사람들의 코드와 비교해보면 크게 3가지의 접근 방식이 있습니다.정직하게 모든 경우의..
[프로그래머스] 접미사 배열 코드 힌트:접미사를 가지고 오는 방법은 2가지가 있습니다 1. 역순으로 문자열에서 접미사 추출:문자열을 역순으로 순회하면서 각 인덱스에서부터 문자를 하나씩 가져오는 방법입니다.2. 순서대로 접미사 추출:문자열을 순서대로 탐색하면서 substring() 메서드를 사용하여 접미사를 추출하는 방법입니다.저는 substring을 추천합니다( 처리 속도와 메모리 사용량 면에서도 효율적이라는 장점이 있습니다. )역순으로 꺼내기for (int i = my_string.length()-1; i >= 0; i--) { my_string.charAt(i)를 사용하여 해당 값을 꺼냅니다}substring을 사용하여 자르기for (int i = 0; i 정렬: Arrays.sort() 메서드를 사용하여 문자열 배열을 사..