프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제주어진 문자열을 회전하며 괄호가 적절한지 검사하는 문제이다.풀이이 문제는 총 2가지의 로직을 시행해야 한다.1. 문자열을 회전2. 회전된 문자열이 올바른 괄호조합인지 검사. 먼저 문자열은 다음과 같이 회전시켰다. for (i in s.indices) { val tmp = s.substring(i) + s.substring(0, i) count += check(tmp) }s는 받아온 문자열이다.이 때 s.indices 즉 문자열의 길이만큼 반복한다.반복시 s.substring(i) + s.sub..
문제주어진 숫자배열에 적절한 부호를 붙혀 연산하여 target숫자가 될 수 있는 경우의 수를 구하는 문제이다.풀이문제의 조건에 숫자배열의 순서를 바꾸지 말라는 조건이 있다.따라서 각 숫자를 재귀하여 탐색하는 DFS를 사용하여 문제를 해결하였다. fun DFS(idx: Int, _summ: Int, isPlus: Boolean) { var _sum = _summ if (isPlus) { _sum += numbers[idx] } else { _sum -= numbers[idx] } if (idx == length - 1) { ..
문제 시작지점 S에서 출발하여 2명의 사람이 각각 A지점과 B지점에 가야할 때 최단거리를 구하는 문제이다. 풀이 시작지점에서 출발하여 A, B를 돌도록 최단거리를 구하면 안된다. 그 이유는 한 지점에서 각각의 사람이 갈라져서 이동하기 때문이다. 예를들어 위의 사진의 경우 S에서 출발하여 1번노드로 이동후 B는 5 -> 3 -> 2 노드로 이동하고 A는 5 -> 6 노드로 이동하므로 각각의 경우를 따로따로 구해야 한다. 여기서 봐야할 점은 S에서 출발하여 A, B 로 각각 간다는점인데 이를 다시생각하면 한 지점에서 S, A, B지점으로 이동한 거리를 모두 합한 값이 된다. 따라서 각 지점에 대해 S, A, B 까지의 최단거리를 합한 후 가장 작은 값을 구하면 된다. data class Node(val en..
문제 수열의 부분수열중 일정값을 넘는 부분수열의 가장 짧은 길이를 구한다. 풀이 최단거리를 구해야하기 때문에 다익스트라를 이용하였다. 먼저 우선순위 큐에 들어갈 데이터를 정의하였다. 데이터는 index와 거리가 필요하므로 다음과 같이 data class를 정의하였다. data class Node(val index: Int, val distance: Int): Comparable { override fun compareTo(other: Node): Int = distance - other.distance } distance값을 기준으로 정렬한다. val (V, E) = readLine().split(" ").map { it.toInt() } val K = readLine().toInt() val dis..
문제 수열의 부분수열중 일정값을 넘는 부분수열의 가장 짧은 길이를 구한다. 풀이 투포인터를 사용하면 간단히 해결할 수 있다. start와 end를 각각의 포인터로 하여 해결한다. val (N, M) = readLine().split(" ").map { it.toInt() } val nums = readLine().split(' ').map { it.toInt() } var ans = Int.MAX_VALUE var end = 0 var tmp = 0 var start = 0 N, M값을 입력받고 필요한 변수를 선언한다. kotlin 에서 최대값의 경우 Int.MAX_VALUE로 설정할 수 있다. while (end < N) { while (end < N && tmp < M) { tmp += nums[en..
서론 코딩테스트 언어를 파이썬에서 코틀린으로 변경하였다. 가장큰 이유는 바로 안드로이드 직군에서 kotlin코테를 더 많이 본다는점... 코틀린과 파이썬의 문법은 천차만별이고 문법을 익힐 필요가 있기 때문에 이미 풀어본 문제들을 코틀린을 사용해서 다시 해결하였다. 문제 DFS및 BFS를 이용하여 문제를 해결한다. 풀이 기본적인 구현은 간단하기 때문에 사용한 문법을 정리하면서 알아본다. var graph = arrayOf() var visited = booleanArrayOf() var dfsAns = ArrayList() var bfsAns = ArrayList() 먼저 필요한 전역변수들을 선언한다. 그래프와 방문여부를 담을 변수, 정답을 출력할 변수이다. fun solve() = with(Buffer..