프로그래머스
-
프로그래머스 [위클리 7주차] - 입실 퇴실알고리즘 문제 풀이 2021. 9. 14. 14:35
import java.util.Arrays; import java.util.HashMap; /** * https://programmers.co.kr/learn/courses/30/lessons/86048 * 2021-09-14 */ public class Weekly7 { public int[] solution(int[] enter, int[] leave) { /* 뒤에 들어온 사람보다 늦게 나가면 무조건 만난다. and 1, 2, 3 들어오고 3, 1, 2 로 나갈 때 2 가 1 보다 늦게 들어오고 늦게 나가지만 순서상 3이 나갈 때 까지 나갈 수 없기 떄문에 만날 수 밖에 없다. 따라서 나보다 늦게 들어온 사람이 나보다 먼저 나갈 때 그 사이에 들어온 사람은 만난다 */ // 사람 번호 to inde..
-
프로그래머스 - 체육복[코틀린]알고리즘 문제 풀이 2021. 2. 22. 00:19
/* * https://programmers.co.kr/learn/courses/30/lessons/42862?language=kotlin * 2021-02-22 */ package study.programmers.greedy fun gymSuit(n: Int, lost: IntArray, reserve: IntArray): Int { val lostSet = lost.toMutableSet() val reserveSet = reserve.toMutableSet() // 여벌이 있는데 잃어버린 않은 사람들은 도난, 여벌 목록에서 제거 reserve.filter { lostSet.contains(it) }.forEach { reserveSet.remove(it) lostSet.remove(it) } res..
-
프로그래머스 - 도둑질 [자바]알고리즘 문제 풀이 2021. 2. 14. 21:17
/* * 2021-02-14 * https://programmers.co.kr/learn/courses/30/lessons/42897?language=java */ package study.programmers.dynamic_programming; public class Thievery { public int solution(int[] money) { // 일자로 생각하고 점화식을 만든 후 // 원형임을 고려하자 // 처음 집은 포함하지 않는 경우 int[] dp = new int[money.length]; dp[0] = 0; dp[1] = money[1]; // 처음 집을 포함하는 경우 int[] dp2 = new int[money.length]; dp2[0] = money[0]; dp2[1] = Ma..
-
프로그래머스 - 등굣길 [자바]알고리즘 문제 풀이 2021. 2. 12. 18:45
/* * 2021-02-12 * https://programmers.co.kr/learn/courses/30/lessons/42898 */ package study.programmers.dynamic_programming; public class RoadToSchool { public int solution(int m, int n, int[][] puddles) { int[][] road = new int[m][n]; // 웅덩이 초기화 for (int[] puddle : puddles) { road[puddle[0] - 1][puddle[1] - 1] = -1; } return search(m, n, 0, 0, road); } public int search(int m, int n, int x, int..
-
프로그래머스 - 정수 삼각형 [Java]알고리즘 문제 풀이 2021. 2. 12. 00:15
/* * 2021-02-12 * https://programmers.co.kr/learn/courses/30/lessons/43105?language=java */ package study.programmers.dynamic_programming; import java.util.ArrayList; import java.util.Comparator; public class IntegerTriangle { public int solution(int[][] triangle) { ArrayList prevList = new ArrayList(); ArrayList sumList = new ArrayList(); prevList.add(0); for (int[] row : triangle) { int i = 0;..
-
프로그래머스 - N 으로 표현 [코틀린]알고리즘 문제 풀이 2021. 2. 7. 20:53
처음 DP 문제를 풀어보았는데 생각하지 못한 부분들 때문에 풀이가 쉽지 않았다. 놓친 부분 NN, NNN 등 의 같은 숫자가 나열되는 부분을 생각하지 않고 사칙연산만 고려함 바로 전에 계산한 값들에 사칙연산만 했음 꼭 문자열을 이용해서 계산하지 않아도 됐음 코드 /* * 2021-02-07 * https://programmers.co.kr/learn/courses/30/lessons/42895 */ fun expressedByN(N: Int, number: Int): Int { val resultList = mutableListOf() var linearNum = 0 for (i in 0..8) { linearNum = linearNum * 10 + N val set = mutableSetOf(linea..
-
프로그래머스 - 여행 경로알고리즘 문제 풀이 2021. 1. 17. 00:46
/* * 2021-01-17 * https://programmers.co.kr/learn/courses/30/lessons/43164?language=kotlin */ fun travelRoute(tickets: Array): Array { // route 를 맵으로 생성 val routeMap = mutableMapOf() tickets.forEach { val start = it[0] val dest = it[1] val routeString = "$start-$dest" val route = routeMap[routeString] if (route == null) { routeMap[routeString] = Route(start, dest, 0, emptyList(), 1) } else { rou..
-
프로그래머스 - 단어 변환알고리즘 문제 풀이 2021. 1. 2. 00:14
/* * 2021-01-01 * https://programmers.co.kr/learn/courses/30/lessons/43163 */ fun wordConversion(begin: String, target: String, words: Array): Int { // words 에 target 이 없는 경우 0 반환 if (!words.any { it == target }) { return 0 } // begin 을 포함한 allWords 생성 val allWords = words.plus(begin) // 각 단어별 노드 생성 val nodeMap = allWords.associate { it to WordNode(it) } nodeMap.forEach { (word, node) -> // 한글자만..