Coding Test

자바를 사용한 코딩 테스트
Coding Test/Java 알고리즘 실전

[1204] 최빈수 구하기

✔ 최빈수 구하기 [SWEA 1204] 문제 분석하기 점수는 0점 이상 100점 이하이므로 101의 크기를 가진 배열에 점수에 따라 횟수를 증가시킨 후 가장 큰 값을 반환 손으로 풀어보기 배열에 점수에 따른 인덱스 위치 증가 배열 내림차순 정렬 가장 큰 값 반환 슈도코드 작성하기 T(테스트 케이스 수) for(T만큼) { t(테스트 번호) score(점수 저장 배열 (0점부터 100점까지)) for(i -> 1000동안) { score[점수]++ } max(최댓값) = 0 index(최댓값의 인덱스) = 0 for(i -> score의 길이만큼) { if(최댓값보다 점수가 크거나 같다면) { 최댓값, 인덱스 갱신 } } #T와 index 반환 } 코드 구현하기 /** * 1204) 최빈수_구하기 */ p..

Coding Test/Java 알고리즘 개념

[목차] SWEA S/W 문제해결 기본

Day 순번 문제 풀이 1일차 01 최빈수 구하기 02 View 03 Flatten 2일차 01 Sum 02 Ladder1 03 Ladder2 3일차 01 String 02 회문1 03 회문2 4일차 01 거듭 제곱 02 괄호 짝짓기 03 길찾기 5일차 01 Magnetic 02 GNS 6일차 01 계산기1 02 계산기2 03 계산기3 7일차 01 암호생성기 02 미로1 03 미로2 8일차 01 암호문1 02 암호문2 03 암호문3 9일차 01 중위순회 02 사칙연산 03 사칙연산 유효성 검사 10일차 01 비밀번호 02 Contact

Coding Test/Java 알고리즘 실전

[42628] 이중우선순위큐

✔ 이중우선순위큐 [프로그래머스 42628] 문제 분석하기 가장 작은 값과 가장 큰 값을 찾아야 하므로 두 개의 우선순위 큐를 사용하여 값을 저장하고, 삭제할 때 같이 삭제하도록 함 손으로 풀어보기 Min Heap과 Max Heap을 우선순위 큐로 구현 I일 경우 두 우선순위 큐에 값을 추가 D일 경우 두 우선순위 큐에서 최댓값/최솟값을 삭제 빈 큐일 경우 해당 연산은 무시 1일 경우 Max Heap에서 최댓값을 삭제 후 그 값을 Min Heap에서도 삭제 -1일 경우 Min Heap에서 최솟값을 삭제 후 그 값을 Max Heap에서도 삭제 큐가 비어있다면 [0, 0] 반환, 비어있지 않다면 [Max Heap의 최댓값, Min Heap의 최솟값] 반환 슈도코드 작성하기 operations(이중 우선순위 ..

Coding Test/Java 알고리즘 실전

[42586] 기능개발

✔ 기능개발 [프로그래머스 42586] 문제 분석하기 먼저 배포되어야 하는 순서가 있으므로 스택/큐를 이용해 FIFO를 구현하여 앞의 작업이 배포될 때 같이 배포되도록 함 손으로 풀어보기 스택/큐에 작업을 마치는데 필요한 일수를 저장 스택의 경우 뒤부터 저장 큐의 경우 앞부터 저장 스택/큐에서 같이 배포될 수 있으면 count 증가 후 저장 앞의 작업이 뒤의 작업보다 늦게 끝날 경우 같이 배포 가능 스택/큐의 같이 배포될 수 없으면 1 저장 앞의 작업이 뒤의 작업보다 일찍 끝날 경우 같이 배포 불가능 각 배포마다 몇 개의 기능이 배포되는지 반환 예) progressed = [93, 30, 55], speeds = [1, 30, 5] Stack [9, 3, 7] → (7, 3) / (9) Queue [7,..

Coding Test/Java 알고리즘 실전

[42577] 전화번호 목록

✔ 전화번호 목록 [프로그래머스 42577] 문제 분석하기 해시를 사용해 전화번호를 저장한 후, 전화번호를 하나씩 잘라가며 해시 안에 존재하는지 확인 예) "12", "123" "1"이 현재 해시에 존재하는지 확인 "12"가 현재 해시에 존재하는지 확인 손으로 풀어보기 HashMap에 전화번호 1을 저장 HashMap에서 각 전화번호를 잘라 접두어가 존재하는지 확인 이때 존재한다면 false 리턴 끝까지 존재하지 않는다면 true 리턴 슈도코드 작성하기 phone_book(전화번호부에 적힌 전화번호를 담은 배열) map(전화번호가 담긴 hashMap) map에 phone_book, 1 저장하기 for(i -> phone_book의 크기만큼) { for(j -> i의 크기만큼) { if(map에 phone..

Coding Test/Java 알고리즘 실전

[49191] 순위

✔ 순위 [프로그래머스 49191] 문제 분석하기 모든 선수 간의 순위를 매겨야하므로 플로이드-워셜 알고리즘을 사용 손으로 풀어보기 경기 결과 정보를 인접 행렬에 저장 연결 선수가 같으면 0 주어진 경기 결과 값에서 이겼을 경우 1을 인접 행렬에 저장 주어진 경기 결과 값에서 졌을 경우 -1을 인접 행렬에 저장 플로이드-워셜 알고리즘을 수행 3중 for문으로 모든 중간 경로를 탐색 알고리즘으로 변경된 인접 행렬에서 각 행에 0이 아닌 값이 n - 1개일 때 순위를 매길 수 있는 선수의 수 증가 순위를 매길 수 있는 선수의 수 반환 슈도코드 작성하기 n(선수의 수) results(경기 결과를 담은 2차원 배열) rank(경기 결과를 저장하는 인접 행렬) for(results의 길이만큼) { 이겼을 경우 1..

Coding Test/Java 알고리즘 실전

[43236] 징검다리

✔ 징검다리 [프로그래머스 43236] 문제 분석하기 바위의 지점을 오름차순으로 정렬한 후, 각 지점 사이의 최소(1)와 최대(25)를 이진 탐색의 인덱스로 설정한 후 이진 탐색을 하며 각 지점 사이의 거리가 이진 탐색의 mid 인덱스(13)보다 작을 경우 바위를 제거하도록 함 제거하는 바위가 제거할 바위의 수(2)보다 많다면 현재의 mid 값으로는 탐색할 수 없으므로 최대값을 줄여 인덱스(1, 12)를 다시 설정 이를 반복하여 각 지점 사이의 거리의 최솟값 중에서 가장 큰 값을 찾도록 함 손으로 풀어보기 이진탐색을 위해 데이터 정렬 각 지점 사이의 최소와 최대를 찾기 최소 : 바위 사이의 최소 거리인 1 최대 : 도착지점 - 시작지점인 25 이진 탐색 시작 인덱스 > 종료 인덱스일 때까지 수행 중앙값 ..

Coding Test/Java 알고리즘 실전

[43162] 네트워크

✔ 네트워크 [프로그래머스 43162] 문제 분석하기 깊이 우선 탐색을 진행하면서 같은 네트워크로 연결될 수 있는지 확인 같은 네트워크로 연결될 수 없다면 연결되지 않은 컴퓨터 중 하나를 골라 다시 연결 반복 손으로 풀어보기 모든 노드로 각각 DFS 탐색 알고리즘을 적용해 탐색을 수행 DFS를 실행할 때 현재 노드에서 연결된 노드라면 네트워크 개수 증가 X 새롭게 시작되는 DFS라면 네트워크 개수 증가 O 네트워크 개수 반환 슈도코드 작성하기 n(컴퓨터의 개수) computers(연결에 대한 정보가 담긴 2차원 배열) visited(방문 기록 저장 배열) answer(네트워크 개수) for(n만큼 반복하기) { if(방문하지 않았다면) { DFS(n) answer 증가 } } answer 반환 DFS {..

김깅긍
'Coding Test' 카테고리의 글 목록 (45 Page)