Algorithm/Programmers 48

[프로그래머스] 빛의 경로 사이클 - Java

문제 설명 코딩테스트 연습 - 빛의 경로 사이클 각 칸마다 S, L, 또는 R가 써져 있는 격자가 있습니다. 당신은 이 격자에서 빛을 쏘고자 합니다. 이 격자의 각 칸에는 다음과 같은 특이한 성질이 있습니다. 빛이 "S"가 써진 칸에 도달한 경우, 직진 programmers.co.kr 접근 방법 우선 각각의 빛의 경로 사이클을 구분하는 방법은 특정 노드 위치(행 : row, 열 : col)에서의 특정 방향(동, 서, 남, 북)을 통해 구분하는 방법이 있습니다. 예를 들어 A 사이클과 B 사이클이 있다고 했을 때 A 사이클의 모든 노드에서의 방향이 B 사이클의 각각의 모든 노드에서의 방향은 중복되는 것이 하나도 없습니다. (A[i][j][k] != B[i][j][k]) 만일 하나라도 같다면 A 사이클과 B..

[프로그래머스] 카펫 - Java

문제 설명 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 접근 방법 해당 문제에서 요구하는 것은 갈색 격자의 수와 노란색 격자의 수가 주어졌을 때 이를 통해 카페의 가로, 세로 크기를 구하는 것입니다. 이때 문제 설명과 입출력 예시에 따르면 따르면 카펫 중앙에는 항상 노란색으로 칠해져 있고, 그 테두리에는 갈색으로 칠해져 있다는 사실을 확인할 수 있습니다.(문제에서 명확하게 설명되있다고 생각하지는 않지만) 이러한 조건을 토대로 답을 구하기 위해 다음과 같이 접근해보았습니다. 우선 가로 길이가 세로 길이와..

[프로그래머스] 더 맵게 - Java

문제 설명 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 접근 방법 해당 문제는 우선수위 큐 PriorityQueue 자료구조를 이용해서 해결할 수 있었습니다. 우선 처음 파라미터로 받은 int형 배열 scoville의 요소들을 PriorityQueue에 add합니다. 이때 PriorityQueue의 특성으로 add된 정수형 요소들은 오름차순으로 정렬되게 됩니다. (PriorityQueue 자료구조를 생성할 때 Collections.reverseOrder()를 인자로 주면 내림차순으로 정렬하도록..

[프로그래머스] 기능개발 - Java

문제 설명 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 접근 방법 우선 주어진 int형 배열 progresses에 대해 각각의 기능별로 배포하는데 까지 걸리는 시간을 구합니다. int countOfProgresses = progresses.length; int[] days = new int[countOfProgresses]; for (int i = 0; i < countOfProgresses; i++) { days[i] = (int) Math.ceil( ((double) (100 - progress..

[프로그래머스] 튜플 - Java

문제 설명 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 접근 방법 우선 입력받은 문자열 s 중 '{'와 '}'를 모두 제거하여 숫자와 쉼표(,)만 남게 합니다. 이후 쉼표(,)를 기준으로 문자열을 분리(split)하여 문자열(숫자 문자열) 배열을 만듭니다. s = s.replace("{", ""); s = s.replace("}", ""); String[] numbers = s.split(","); 각각의 숫자 문자열을 HashMap에 key 값으로 저장..