코딩테스트 27

[프로그래머스 / lv 2] 소수찾기(JAVA)

문제 풀이방법 소수를 판단하는 함수와 dfs방식으로 숫자 조합을 만드는 함수를 구현 중복없이 담기위해 HashSet 생성하여 모든 숫자 조합을 담은 후 소수를 판단하여 카운트 코드 import java.util.*; class Solution { HashSet numbersSet = new HashSet(); public int solution(String numbers) { dfs("", numbers); int count = 0; Iterator it = numbersSet.iterator(); while (it.hasNext()) { int number = it.next(); if (isPrime(number)) count++; } return count; } public boolean isPrim..

코딩테스트 2023.05.20

[프로그래머스 / lv 2] 타겟 넘버 (JAVA)

문제 풀이방법 깊이 우선 탐색 알고리즘 사용 마지막 노드까지 탐색했을 때 타겟 넘버와 합계가 같으면 정답 카운트 증가 탐색할 노드가 남아있는 경우, 이전 노드까지의 합에서 해당 노드의 값을 더하고 빼는 두가지 경우로 깊이 우선 탐색 알고리즘 재실행 코드 class Solution { int answer = 0; public int solution(int[] numbers, int target) { dfs(numbers,0,target,0); return answer; } public void dfs(int[] numbers, int depth, int target, int sum){ if(depth==numbers.length){ if(sum==target){ answer++; } }else{ dfs(n..

코딩테스트 2023.05.08

[프로그래머스 / lv 1] 문자열 내림차순으로 배치하기 (JAVA)

문제 풀이 방법 문자열을 배열로 변환 후 Arrays.sort()를 사용하여 정렬 후 다시 문자열로 반환한다. mapToObj()는 기본형을 객체형으로 변환해서 처리하고, map()은 객체형을 객체형으로 변환해서 처리합니다. 하지만 반환값은 항상 객체형 스트림이며, 입력값에 따라 다른 형태의 객체형 스트림이 반환됩니다. 따라서 각 메소드 안에서 어떤 값을 넣느냐에 따라 반환값이 달라질 수 있습니다. StringBuilder.reverse()를 활용해서 내림차순 정렬도 가능하다. 코드 import java.util.Arrays; import java.util.Collections; import java.util.stream.Collectors; class Solution { public String sol..

코딩테스트 2023.04.15

[프로그래머스 / lv 0] 문자열 정렬하기(1) (JAVA)

문제 풀이 방법 emergency를 정렬시킨 배열을 만든다. 해당 배열의 인덱스를 통해 진료 순서를 answer 배열의 값으로 저장한다. 오름차순 정렬이므로 전체 길이에서 해당 배열의 인덱스를 뺀 값이 진료 순서가 된다. 코드 import java.util.Arrays; class Solution { public int[] solution(int[] emergency) { int[] emergency2 = Arrays.copyOf(emergency,emergency.length); int[] answer = new int[emergency.length]; Arrays.sort(emergency2); for(int i=0; i

코딩테스트 2023.04.07

[프로그래머스 / lv 0] 옹알이(1) (JAVA)

문제 풀이 방법 문자열을 대치하여 원하는 문자열로만 이루어져 있는지 확인한다. replaceFirst를 통해 네가지 발음이 포함되면 0으로 대체하여 네가지 발음으로만 포함되어있는지 확인하다. 1. replace public String replace(CharSequence target, CharSequence replacement) : target 부분을 replacement로 대치한 새로운 문자열을 리턴 CharSequence를 구현한 클래스를 매개로 받는다. (String, StringBuffer, StringBuilder) 2. replaceAll public String replaceAll(String regex, String replacement) : 패턴이 일치할 경우 모두 대치 3.rep..

코딩테스트 2023.04.03

[백준 / 실버4] 3036 : 링 (JAVA)

문제 풀이 방법 반복문을 통해 첫번째 링과 다른 링들을 순서대로 비교하여 몇바퀴 도는지 알아낸다. 최대공약수를 구한 후 각각의 둘레값에 나눠서 기약 분수 형태로 출력한다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb =..

코딩테스트 2023.03.27

[백준 / 실버3] 1021 : 회전하는 큐 (JAVA)

문제 풀이 방법 LinkedList 활용하여 구현한다. 찾고자하는 원소의 위치를 바로 찾기 위해(indexOf) 뽑고자 하는 원소의 위치가 리스트의 중앙을 기준으로 왼쪽인지 오른쪽인지를 판단하여 이에 따라 연산한다. 중앙 기준 왼쪽 위치 첫번째 원소를 뽑고 마지막에 추가 중앙 기준 오른쪽 위치 마지막 원소를 뽑고 처음에 추가 코드 package boj1021; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.StringTokenizer; public class Main { public static void..

코딩테스트 2023.03.26

[백준 / 실버4] 10845 : 큐 (JAVA)

문제 풀이 방법 Queue 사용한다. Queue를 사용하는 방법으로 Deque, Queue, LinkedList가 있는데 큐의 양쪽으로 접근이 필요하므로 Deque 사용 Switch 구문을 사용해서 input 별로 처리한다. 코드 package boj10845; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.Deque; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOExc..

코딩테스트 2023.03.24

[백준 / 실버4] 1302 : 베스트셀러 (JAVA)

문제 풀이 방법 HashMap을 사용하여 key 값에는 책 제목, value 값에는 팔린 수를 저장한다. getOrDefault (Object Key, V defaultValue) (1) 맵에 저장할때마다 key값과 value값을 계속해서 이전의 값과 비교하여 더 큰 value값과 사전순으로 앞선 key값을 따로 저장하여 출력한다. (2) 또는, 최대값만 구하고 해당 최대값을 가진 key값을 리스트에 넣고 정렬하여 첫번째 책 제목을 출력한다. 코드 (1) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map;..

코딩테스트 2023.03.24