코딩테스트/SWEA_Java
-
Q. 1860. 진기의 최고급 붕어빵(D3)코딩테스트/SWEA_Java 2023. 5. 10. 23:01
Q. 1860. 진기의 최고급 붕어빵(D3) 0. 문제 D3 난이도의 문제이고, 구현 문제라고 생각된다. N, M, K가 주어진다. N은 붕어빵을 먹으려는 사람의 수 이고, M초에 K개의 붕어빵을 만들 수 있다. 한 손님은 한 개의 붕어빵을 가져 간다고 하면, 모든 손님들에게 기다리는 시간없이 붕어빵을 제공할 수 있는지 판별하는 프로그램을 작성하라. 1. 풀이 1) 손님들이 오는 순서가 차례대로 주어지지 않으므로 먼저 입력을 받은 뒤 정렬을 한다. 2) 그리고 손님들을 받으면서, 만약 현재 붕어빵이 없을 경우 손님의 시간 이하인 K 배수만큼 시간을 더하고, 붕어빵을 만들어서 손님에게 줄 수 있는지 판별한다. 3) 손님에게 줄 수 없을경우 즉시 루프를 종료한다. 시간을 줄이기 위해 손님이 온 시간에 만약 ..
-
Q. 1225. 암호생성기(D3)코딩테스트/SWEA_Java 2023. 5. 9. 21:07
Q. 1225. 암호생성기(D3) 0. 문제 D3 난이도의 문제이고, Queue를 사용한 구현 문제라고 생각된다. 숫자가 8개 주어지고 맨 앞의 숫자에 1을 빼고 맨 앞의 숫자를 맨 뒤로 보낸다. 이후 다음 숫자는 2를 빼고 맨 뒤로 보낸다. 빼는데 사용하는 숫자를 n이라고 했을 때 n이 5를 넘어서면 n은 1이 된다. 입력에 주어진 8개의 수 중 하나라도 0이 되면 루프를 종료하고, 결과를 출력하는 문제이다. 1. 풀이 1) 입력값을 받은 뒤에 큐에 저장한다. 2) 일일히 값을 빼가며 문제의 로직대로 수행한다. import java.util.Arrays; import java.util.Deque; import java.util.LinkedList; import java.util.StringTokeniz..
-
Q 1859. 백만 장자 프로젝트(D2)코딩테스트/SWEA_Java 2023. 5. 8. 23:35
Q 1859. 백만 장자 프로젝트(D2) 0. 문제 D2 난이도의 문제이고, 단순한 배열 순회 문제라고 생각된다. 매일 매일 물건의 가격이 주어진다. 하루에 물건은 하나만 살 수 있고, 파는 수량은 제한이 없다.이 때 최대 이익을 출력하는 문제이다. 1. 풀이 처음에 투 포인터나 정렬을 이용한 문제인가? 라는 생각을 했었는데, 단순하게 생각을 뒤집어서 맨 뒤에서 앞으로 배열을 조회하면 해결할 수 있었다. 1) 배열의 맨 뒤에서 앞으로 순회한다. 1-1) 이 때 만약 기존 최대 가격보다 큰 가격을 만날 경우 그 값을 저장한다. 1-2) 그렇지 않은 경우 기존 최대 가격 - 현재 가격을 결과값에 저장한다. import java.util.Scanner; import java.util.StringTokenize..
-
Q. 1206. View (D3)코딩테스트/SWEA_Java 2023. 5. 7. 22:03
Q. 1206. View(D3) 0. 문제 D3 난이도의 문제이고, 구현 문제라고 생각된다. 빌딩들의 높이가 주어지고, 오른쪽/왼쪽 두 칸이 비어있으면 그 집은 조망권이 확보된다고 말할 때, 조망권이 확보되는 세대의 수를 구하는 문제이다. 1. 풀이 1) 모든 땅에 대해 왼쪽 2칸의 높이의 최대값 & 오른쪽 2칸 높이의 최대값을 저장한다. 2) 그리고 두 값을 현재 땅의 높이와 비교해서, 현재 땅이 양 옆 높이의 최대값보다 높은 경우 그 차이를 결과에 저장하는 방식으로 풀었다. import java.util.Scanner; import java.util.StringTokenizer; import java.io.BufferedReader; import java.io.FileInputStream; impor..
-
Q. 1991 자바 : 트리 순회코딩테스트/SWEA_Java 2023. 4. 13. 09:47
Q. 1991 자바 : 트리 순회 문제 : boj.kr/1991 실버 1 난이도의 문제이다. 이진 트리가 주어졌을 때 전위, 중위, 후위 순회를 해 결과를 출력하는 문제이다. 주의해야 할 점은 이진 트리로 입력이 주어지며, 자식이 없을 경우 '.'으로 주어진다는 점 이다. 아래와 같은 방식으로 풀이했다. 1. 저장을 List에 해야하므로, 입력값을 int로 변환하는 과정이 필요했고, 입력은 유효한 값이 주어지므로(A-Z 사이의 값) root 노드의 값 - 'A'를 계산해 int로 변환한 뒤 자식들을 이 인덱스를 가진 List 안에 저장했다. 2. 순회를 할 때는 list에 들어있는 값 - 'A'를 이용해 자식 노드에 방문했고, 출력을 할 때는 현재 인덱스 + 'A'를 문자열로 반환해 출력했다. 이진 트리..
-
Q. 1868 파핑파핑 지뢰찾기(D4)코딩테스트/SWEA_Java 2023. 3. 15. 15:34
문제 DFS와 BFS를 같이 이용해서 풀었다. 모든 방향을 다 생각해야 하므로 dy, dx는 현재 좌표를 제외한 모든 좌표를 순회할 수 있게 만들었다. 1. 처음 입력값을 받을 때 Queue에 폭탄들의 위치를 저장하고, 방문 처리를 했다. 2. 이후 저장된 폭탄들의 위치를 가지고, 폭탄이 없는 근처 칸들에 표시를 했다. (Board[nextY][nextX]++, BFS 사용) 3. 폭탄이 근처에 있는 모든 칸에 표시가 완료됬다면, 이제 0을 체크할 차례이다. 0으로 표시 될 칸들과 이와 인접한 칸들이 한 번의 클릭에 연쇄적으로 숫자가 표기되므로 1) 먼저 0인 칸을 방문했을 때 그 칸을 방문처리 하고(visited[y][x] = true) click_cnt++를 해준다. 2) 이를 BFS를 이용해 만약 ..
-
다익스트라(Dijkstra) 구현_Java코딩테스트/SWEA_Java 2023. 2. 25. 14:55
import java.util.PriorityQueue; class Solution { static int INF = 987654321; static int MAX_N = 6; static class Pair implements Comparable{ int x, y; Pair(int x, int y){ this.x = x; this.y = y; } @Override public int compareTo(Pair o) { if (o.x == this.x) return this.y - o.y; else return this.x - o.x; } } static int graph[][] = new int[][]{ {0,2,5,1,INF,INF}, {2,0,3,2,INF,INF}, {5,3,0,3,1,5}, {1..
-
Q. 1767 자바 : 프로세서 연결하기코딩테스트/SWEA_Java 2023. 1. 31. 23:17
문제 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV4suNtaXFEDFAUf&categoryId=AV4suNtaXFEDFAUf&categoryType=CODE&problemTitle=1767&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 아래의 단계로 나눠서 풀었던 것으로 기억한다. 1. 먼저 벽에 붙어있지 않은 Core들의 좌표를 List에 저장 2. 코어에 전선을 연결하는 방법 상 하 좌 우를 dy, dx 배열을 이용해 구분하고 이를 dfs 함수로 실행 (반환 조건은 CoreList를 모두 탐색했을 경우) ..