코딩 테스트/프로그래머스
프로그래머스 - 입국 심사 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 이진탐색을 통해서 구함 end = 가장 늦게 처리하는 심사대에 모든 인원이 심사 받는 경우(최대 경우) mid(심사 걸리는 최소 시간)값을 구하고 해당 시간에 최대로 처리되는 심사인원 수가 n보다 크거나 같으면 mid를 줄이고 아니면 mid를 늘리면서 탐색 import java.util.*; // 프로그래머스 입국심사 문제 class Solution { public long s..
프로그래머스 - 네트워크 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 방문처리가 되지않은 노드를 선택하고 answer을 +1하고 그와 연결된 모든 노드를 방문처리한다. 위를 반복해서 네트워크의 수를 구함 import java.util.LinkedList; import java.util.Queue; // 프로그래머스 네트워크 문제 class Network { static int answer = 0; public int solution(int..
프로그래머스 - 단어 변환 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr dfs 을 통해서 현재 문자와 차이가 1개 이하가 나는 것을 찾아서 이동하는 형태로 해결 // 프로그래머스 단어변환 문제 class ChangeWord { static int answer = Integer.MAX_VALUE; public int solution(String begin, String target, String[] wor..
프로그래머스 - 여행 경로 문제 (자바)
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로 노드로 해결하는게 아니라 티켓을 사용하는 방식으로 풀었다. 현 위치와 티켓의 출발지점이 같으면 그 티켓을 사용하고 사용했음을 boolean 배열에 설정하는 방식으로 해결 import java.util.ArrayList; import java.util.Collections; /..
프로그래머스 - 타겟넘버 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr dfs을 통해서 각각의 수를 +-하는 모든 경우를 구함 // 프로그래머스 타겟넘버 문제 class TargetNumber { static int answer = 0; public int solution(int[] numbers, int target) { dfs(numbers, 0, 0, target); return answ..
프로그래머스 - 도둑질 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/42897 코딩테스트 연습 - 도둑질 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 programmers.co.kr 0 번부터 계산해서 마지막을 제외한 경우와 1번부터 계산해서 마지막을 포함하는 경우 둘 중 큰값을 리턴 // 프로그래머스 도둑질 문제 class Thief { public int solution(int[] money) { int[][] dp = new int[2][money.length]; // 첫번째 포함 경우 dp[0][0] = money[0]; dp[0][1] = mone..
프로그래머스 - 카펫 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 1. 갈색이 노란색을 감싸고 있어야하기 때문에 노란색은 사각형의 모습을 보여야합니다. 그래서 나누어지지 않는 경우 pass 2. 사각형인 경우 필요한 테두리를 계산 합니다. 3. 구한 테두리의 값이 갈색과 같은 경우 큰값을 가로, 작은 값을 세로로 해서 리턴합니다(아래 코드에서 +2하는 이유는 노란색 사각형의 가로, 세로 + 2를 하면 테두리의 가로, 세로 이기 때문) /..
프로그래머스 - 모의고사 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 3명의 수포자의 찍는 패턴을 배열로 만들고 정답과 비교해서 점수를 구하고 점수 중 제일 큰 값을 구하고 그 값과 같은 점수를 받은 수포자의 인덱스를 배열에 넣어서 리턴함 import java.util.ArrayList; // 프로그래머스 - 모의고사 문제 class Exam { static ArrayList list = new ArrayList(); static int[] a..