본문 바로가기

프로그래머스45

모음사전(Lv.2) 문제 설명 입출력 예시 요약 A, E, I, O, U 모음을 가지고 만들 수 있는 1~5 자리의 모든 조합(경우의 수) 구하기 풀이 접근 방식 1. 순서 파악 → A, AA, AAA, AAAA, AAAAA, AAAAE, AAAAI, AAAAO, AAAAU, AAAE, AAAEA, AAAEE, AAAEI, AAAEO, ... → dfs로 length가 5가 되면 return 2. dfs 메소드 구현 → 재귀 방식을 통한 모든 조합을 구하는 dfs 메소드 구현 코드리뷰 import java.util.*; public class Solution { String[] arr = {"A", "E", "I", "O", "U"}; List list = new ArrayList(); public void dfs(Stri.. 2024. 3. 25.
푸드 파이트 대회(Lv.1) 문제 설명 입출력 예시 요약 준비된 음식의 순서대로 먹는 개수만큼 숫자 출력 풀이 접근 방식 1. 각 음식의 개수를 참가자 수인 2로 나눈다. → 몫의 크기만큼 해당 음식의 숫자 저장 2. 두 번째 참가자 음식 정렬 → index = length()-1부터 0까지 감소해가며 문자열에 추가 코드리뷰 class Solution { public String solution(int[] food) { String setting = "";// 1번 참가자 음식 세팅 String answer = ""; for(int i = 1; i < food.length; i++) { int count = food[i]/2; for(int j = 0; j < count; j++) {// 2로 나눈 몫만큼 반복해서 해당 음식 숫자 .. 2024. 3. 24.
뉴스 클러스터링(Lv.2) 문제 설명 입출력 예시 요약 각 문자열에 대해 크기가 2인 문자열의 집합을 구한 후 서로 비교 풀이 접근 방식 1. 문자열로 집합 만들기 → makeSet() 메소드를 통해 집합 리스트 생성 → Character.isAlphabetic()으로 알파벳만 포함 2. 교집합 구하기 → .equalsIgnoreCase()를 통해 대소문자 구분 없이 비교 (완전 탐색) 3. 합집합 구하기 → 두 개의 집합 리스트를 더한 union에서 교집합 원소들 제거 → stream().anyMatch()를 통해 비교 후 제거 코드리뷰 import java.util.*; class Solution { List list1 = new ArrayList(); List list2 = new ArrayList(); List inter .. 2024. 3. 24.
단지번호붙이기 문제 설명 입출력 예시 요약 아파트 단지의 개수와 각 단지에 속한 아파트 개수 구하기 풀이 접근 방식 1. 전체 단지의 모습을 담은 이차원 배열 graph 작성 → 전체 사이즈는 N+2로 설정(상하좌우 탐색을 위해 1~N 까지의 전체 단지를 둘러싸는 크기로 설정) → 1 : true, 0 : false로 아파트가 있는 곳 표시 2. 단지 개수 구하기 → graph의 첫 번째 row부터 순차적으로 방문하면서 true인 곳을 false로 변경 → 상하좌우 탐색 전 첫 방문시 단지 count ++ 3. 단지 내 아파트 개수 구하기 → 상하좌우 탐색해가며 true인 곳을 방문(dfs) → 방문 시 마다 아파트 count++ → 방문한 곳은 graph에서 false로 변경 코드리뷰 import java.util... 2024. 3. 24.
바이러스 문제 설명 입출력 예시 요약 1번 컴퓨터와 직.간접적으로 연결되어 있는 컴퓨터의 개수 구하기 풀이 접근 방식 1. 연결되어 있는 컴퓨터들을 이차원 배열로 표시 → graph[row][col], graph[col][row] 모두 true로 연결됨을 표시 2. 방문하지 않은 컴퓨터(노드) 확인 후 방문 → 재귀함수로 dfs 실행 코드리뷰 import java.util.*; public class Main { static int N, M; static int count = 0; static boolean[][] graph; static boolean[] visited; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N.. 2024. 3. 24.
체스판 다시 칠하기 문제 설명 입출력 예시 요약 흰색 또는 검은색을 기준으로 8x8 체스판을 만들 때 최소로 칠해야 하는 타일의 개수 구하기 풀이 접근 방식 1. 검은색 체스판을 만들기 위해 칠해야 하는 타일의 개수 → paintB() 메소드를 통해 구한다. 2. 흰색 체스판을 만들기 위해 칠해야 하는 타일의 개수 → paintW() 메소드를 통해 구한다. 3. 둘 중 최솟값 return 코드리뷰 import java.util.*; class Main { static List list = new ArrayList(); static String[] choices = {"BWBWBWBW", "WBWBWBWB"};// 검은색 line과 하얀색 line을 담은 배열 public static int paintB(int row, in.. 2024. 3. 22.