코딩테스트(29)
-
[프로그래머스] N으로 표현-JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr Dynamic Programming(동적 계획법)을 이용하여 풀었다. 풀이 방식 개인적으로 로직을 짜기 제일 까다로웠던 문제중 하나였던 것 같다. 필자는 이 문제를 'N을 사용한 횟수'를 기준으로 나눠 풀이하였다. 즉 N이 5라면, 5를 1번, 2번, 3번...8번(문제 조건에 8보다 크면 -1리턴이기 떄문)사용해서 만들 수 있는 숫자들의 경우로 나눈 것이다. 박스가 8개 있다고 해보자. 1번 박스에는 N을 1번 사용해서 만들 수 있는 숫자들이 담겨있다. N = 5라고 한다면 1번 박스에는 5만 담겨있을 것이다. 2번 박스에서는 ..
2022.03.09 -
[프로그래머스] 여행경로-JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr DFS(깊이 우선 탐색)방식에 착안하여 풀이하였다. 풀이 방식 1. boolean 배열을 선언하여 한번 산 티켓은 표시할 수 있도록 설정한다. 2. route 문자열을 선언하여 지나가는 공항 이름을 하나씩 붙여 경로를 설정할 수 있도록 한다. 3. ArrayList 리스트를 선언하여 모든 공항을 들르는 루트를 다 저장..
2022.03.09 -
[프로그래머스] 네트워크-JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr BFS(너비우선탐색) 방식으로 풀이하였다. 풀이 방식 1. ArrayList에 컴퓨터 0~N까지 모두 넣는다. 2. 반복문을 돌리며 ArrayList에 첫번째 원소를 꺼낸다. (0번 컴퓨터) 0 번째 컴퓨터부터 자신과 연결되어 있는 컴퓨터들을 queue에 넣는다. (ex. computers[0][1] == 1 이면, 0번째와 1번째 컴퓨터가 연결..
2022.03.09 -
[프로그래머스] 타겟 넘버-JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 흔한 dfs문제이다. 재귀를 사용하여 numbers의 숫자를 더하거나 빼는 모든 경우의 수를 다 거쳐본다. 마지막 numbers 원소까지 연산이 끝났을 때, 총 연산값이 target과 일치하면 answer + 1 class Solution { int answer = 0; public void dfs(int[] num, int t..
2022.03.09 -
[프로그래머스] 섬 연결하기 - JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr 이 문제는 '서로소 집합'과 '크루스칼 알고리즘'을 알고 있으면 손쉽게 풀 수 있다. https://born2bedeveloper.tistory.com/29 [JAVA] 서로소 집합(Disjoint Sets)과 연산(Union & Find) 서로소(Disjoint) 서로소(disjoint)는 공통으로 포함하는 원소가 없는 두 집합의 관계다. 서로소 집합(Disjoint Sets)과 연산(Union & Find) 서로소 집합은 위 그림처럼 서로소 집합..
2022.03.03 -
[프로그래머스] 구명보트_JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 이 문제를 보고 처음 생각한 로직은 이랬다. 1. people 무게 오름차순으로 정렬 2. 가벼운 사람부터 구명보트에 limit넘기지 않도록 최대한 때려 넣기(?) 그런데 자꾸 테스트케이스가 오류가 나서 살펴보니... 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 ..
2022.02.28