코딩 테스트
프로그래머스 - 단어 변환 문제 (자바)
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..
프로그래머스 - 단속카메라 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 1. 차량의 나간 지점을 오름차순으로 해서 정렬 2. 카메라 초기값을 -30000 으로 설정 3. 차량 정보를 순회하면서 차량의 진입 지점이 카메라 값보다 작은 큰 경우 해당 차량의 나간 지점에 카메라 설치 4. 3 반복 후 갯수 리턴 import java.util.Arrays; // 프로그래머스 단속카메라 문제 class Camera { public int solution(int[][] routes) { // 끝나는 시점으로 정렬 Arrays.sort(routes, ((o1, o..
프로그래머스 - 등굣길 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 집의 dp값을 1로 두고 웅덩이가 아닌 경우 왼쪽과 윗쪽의 값을 합친 값으로 본인 dp를 설정 웅덩이인 경우 dp를 0으로 둠 주의점 1. 리턴해야하는 게 1000000007으로 나눈 나머지를 해야하는데 효율성 부분에서 이 숫자를 dp를 구하는 과정에서 넘어감 -> dp 구하는 과정에서 나눈 나머지를 셋팅 2. dp를 구할 때 map의 영역을 벗어난 경우 0으로 하..