본문 바로가기

코테58

[java] 프로그래머스 스쿨 문자사전 풀이 1. A, E, I, O, U를 순서대로 저장한 배열 words을 생성한다. - 이때, 어디에서든지 접근할 수 있도록 static으로 선언한다 2. 문자사전에 모든(?) 문자열을 저장할 수 있도록 words라는 리스트를 생성한다 - 이때, 어디에서든지 접근할 수 있도록 static으로 선언한다 3. dfs함수를 선언한다 - 파라미터로 전달된 문자 word를 words에 저장한다. - 파라미터로 전달된 words의 인덱스 depth가 5이면 (즉, U로 이루어진 문자가 끝나면) return - 반복문을 사용하여 word에 알파벳을 하나씩 더하고, depth에 1을 더해서 다시 dfs를 호출한다 - answer는 찾으려는 문자 word의 words내 인덱스 값이다 회고 - 완전탐색으로 안풀고 수학적으로.. 2023. 12. 27.
[python] 프로그래머스스쿨 더 맵게 코딩테스트 연습 - 더 맵게 | 프로그래머스 스쿨 (programmers.co.kr) 풀이 1. 리스트 scoville을 heapify를 사용해 힙으로 만들어준다 2. while 문을 사용해서 scoville[0]의 값이 K보다 작은 동안에만 가장 작은 값과 두 번째로 작은 값*2를 더한다 - heappush를 사용해서 더한다 - 가장 작은 값 반환 동시에 삭제하기 위해 heappop을 사용한다 3. 만약 scoville의 값이 하나밖에 없다면, return -1 회고 - list인 scoville을 그대로 활용하고 싶어서 heapify를 사용했다 그냥 하면 안 됨 ㅜ ㅜ - 고친 코드의 효율성이 조금! 더 좋아서 풀이를 고친 코드로 했고 코드는 그냥 같이 첨부한다 코드 (접은 글) 더보기 고치기 전 .. 2023. 12. 14.
[Java] 심화 1단계 심화 1 단계 링크 심화 1 단계 (acmicpc.net) 1. 백준 25083 25083번: 새싹 (acmicpc.net) 풀이 1. 백슬래시(\), 큰따옴표(") 등을 출력할 때에는 앞에 백슬래시를 붙여줘야 한다 - " 출력 : System.out.print("\""); - \ 출력 : System.out.print("\\"); 2. 푸는 방식에 따라 문제와는 관련이 없을 수 있지만 아래 사항도 알아두면 좋다 - 줄바꿈 : \n - 한 문자 앞으로 : \b - 맨 앞으로 : \r - 탭 : \t - 빈 칸 : \0 회고 - 오랜만에 기본적인 사항들을 되짚어봐서 좋았다 풀이 (접은 글) 더보기 public class Main { public static void main(String[] args) { .. 2023. 11. 13.
[java] 프로그래머스스쿨 연습문제 Lv.2 정렬 문제 모음 1. 최댓값과 최솟값 코딩테스트 연습 - 최댓값과 최솟값 | 프로그래머스 스쿨 (programmers.co.kr) 풀이 1. 숫자로 저장하기 위해 ArrayList numbers 선언해준다. 2. String 배열 temp에 s를 " "기준으로 자른 문자들을 넣어준다. 3. for문을 사용해서 temp의 원소를 정수형으로 변환하여 numbers에 넣어준다. 4. numbers를 오름차순으로 정렬해준다. 5. answer에 numbers의 최솟값과 최댓값을 더해준다. 회고 - ArrayList 오름차순 정렬 : Collections.sort(list); - ArrayList 내림차순 정렬 : Collections.sort(list, Collections.reverseOrder); - 레벨 2로 올라오면서 .. 2023. 4. 28.
[java] 프로그래머스스쿨 연습문제 Lv.2 DFS 문제 모음 1. 무인도 여행 코딩테스트 연습 - 무인도 여행 | 프로그래머스 스쿨 (programmers.co.kr) 풀이 1. 깊이 우선 탐색(DFS) 아이디어를 활용한다. 2. 전역변수로 배열 dx, 배열 dy, 2차원 배열 map, 2차원 배열 visited, 정수형 변수 row, col, cnt=0을 선언한다. 3. maps의 원소들을 한글자씩 정수로 바꿔 map에 복사한다. 3-1. 만약 X라면 -1을 저장한다. 4. answer을 리스트로 선언한다. 5. dfs라는 함수를 생성한다. 5-1. 현재 위치에서 이동할 수 있는 인접한 위치로 이동해가며 cnt에 값을 더한다. 5-2. 이동할 수 있는 곳이 더이상 없다면 cnt를 반환한다. 6. 반복문을 통해 map[행][열]의 값이 -1이 아니고 방문한 적이 .. 2023. 4. 28.
[java] 프로그래머스스쿨 연습문제 Lv.2 DP 문제 모음 2. 숫자 변환하기 코딩테스트 연습 - 숫자 변환하기 | 프로그래머스 스쿨 (programmers.co.kr) 풀이 1. 동적 계획법(Dynamic Programming) 아이디어를 활용한다. 2. 정수형 배열 dp를 크기 y+1로 선언한 후, 가능한 가장 큰 값(Integer.MAX_VALUE)으로 채운다. 3-1. 각 인덱스를 '만들 수 있는 값'으로 생각한다. 3-2. 각 인덱스 값을 만들기 위해 필요한 연산 횟수를 저장한다 3-3. 그러니까 """dp[ i ] 의 값은 곧 x가 i로 변환되기 위한 연산 횟수""" 인 것임 3-4. 이 과정은 memoization을 위한 것 4. 배열에 만들 수 있는 값을 인덱스로 삼아 최소 연산 횟수를 저장한다 4-1. for문으로 x부터 시작해 y까지 4-2. .. 2023. 4. 28.