목록코딩테스트 풀이 (28)
Simple&Natural
[풀이과정] 정말 매우 고생한 문제였다. 이상하게 생각이 꼬여 계속 테스트 케이스에서 실패하는 바람에 거의 반나절을 넘게 푼 것 같다. 우선 key를 한칸씩 이동시키며 lock과 만날 수 있는 모든 경우의 수를 고려해주면 된다. 내 경우엔 lock의 왼쪽 하단부터 오른쪽 상단까지 이동시키며 자물쇠의 해제 여부를 판단하였다. 이것을 key를 회전시켜가며 4번 진행해주면 된다. 문제 자체는 딱히 고차원의 알고리즘이나 사고를 필요로 하지 않기 때문에 배열과 인덱스를 다루는 부분 그리고 조건에서 실수만 하지 않는다면 무난히 풀 수 있는 문제라고 본다. [사용언어] Kotlin [소스코드] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ..
푼지 좀 지난 문제다보니 자세히 어떻게 풀었는지 가물가물한데 문자열을 1개, 2개, 3개 단위로 늘려가며 압축해본 후 가장 짧은 값을 리턴하면 된다. 참고로 소스는 절대 깔끔한 편이 아니다. 더 좋은 다른 코드가 많으니 참고 바람. 사용언어: Kotlin 소스코드: fun solution(s: String): Int { var answer = 0 var answerStr = "" var count = 0 var tmpStr = "" var tmpCount = 0 while(count 1) { answerStr = answerStr.plus(tmpCount.toString() + tmpStr) if(i == s.length/count-1) { answerStr = answerStr.plus(s.substr..
풀이과정) 종이가 접히는 모서리의 모양을 예측하는 게 문제의 핵심이다.종이를 접어가며 예측하지 말고 종이를 펼쳐가며 예측하면 좀 더 쉽게 답을 구할 수 있다. 펼쳤을 때의 접면은 무조건 아래로 볼록하므로 0이 되고펼친 반대쪽은 원래의 면을 반대로 뒤집어주면 된다.이걸 반복해주면 답이 나온다. 사용언어 : Kotlin 소스코드) 12345678910111213141516171819202122232425fun solution(n: Int): IntArray { var answer = intArrayOf() for (count in 1..n) { answer = answer.plus(0) if (answer.size>1) { answer = answer.plus( answer.slice(0 until answ..
풀이과정) 그냥 느낌 가는대로 사고의 흐름따라 풀었다. 문자열을 원소의 갯수 순서대로 정렬한 후 1개부터 n개까지 비교하면서 어떤 원소가 추가되었는지를 확인한 후 해당 원소를 추가해주는 방식이었다. 하지만 다른 풀이를 보니 매우 효율적인 풀이들이 많았다. 우선 해당 문자열을 모두 해체하여 각 원소들의 갯수를 센다. ex) 1-5개, 2-4개, 3-3개 ... 그 후 갯수에 따라 오름차순으로 정리한 뒤 각 갯수에 해당하는 수를 순서대로 넣어주면 원하는 튜플이 된다. 풀이는 기억나는데 코드를 분실해서 생략...