반응형
반응형
문제 풀이 bool isBadVersion(version) 함수가 주어지고 Bad가 처음 발생한 버전을 찾는 문제이다. 이진 탐색을 이용해서 풀면 되는 문제다. Kotlin으로 풀었는데 한 가지 주의할 점은 middle를 구할 때 (high + low)/2 이용하면 Integer 범위를 초과할 수 있어 Time Limit Exceeded 이 나온다. 대신에 low + (high - low)/2 를 이용하면 해결할 수 있다. (low + high)/2 = low + (high-low)/2 코드 /* The isBadVersion API is defined in the parent class VersionControl. def isBadVersion(version: Int): Boolean = {} */ c..
문제 풀이 a + b + c = 0 인 경우를 찾는 문제이다. 투 포인터를 이용해서 풀었다. 우선 정렬을 한 다음에 for 루프를 돌면서 nums[index] 가 a 라고 할 때 포인터를 이동하면서 b 와 c 값을 찾았다. 문제에서 답에 중복을 허용하지 않기 때문에 중복인 경우는 다시 계산하지 않게 처리했다. [0, 0, 0, 0, 0, 0] 와 같은 인풋이 들어왔을 때 한 번만 계산하고 스킵하게 된다. 시간복잡도는 O(N^2) 이 된다. => 정렬하는 데 O(NlogN) + for 루프 돌면서 b와 c값 찾는 데 O(N^2) 코드 fun threeSum(nums: IntArray): List { nums.sort() val result: MutableList = mutableListOf() for (i..
문제 풀이 주어진 문자열이 팰린드롬인지 확인하는 문제이다. 팰린드롬은 뒤집어도 같은 말이 되는 단어 또는 문장을 말한다. 문제에서 팰린드롬인지 확인할 때 알파벳과 숫자만을 대상으로 하고 대소문자를 구분하지 않는다고 했다. 우선 주어진 문자열을 다 소문자로 바꾼다. 그리고 정규식으로 알파벳과 숫자가 아닌 불필요한 문자를 제거한다. 이제 for 문을 돌면서 왼쪽 인덱스의 값과 오른쪽 인덱스의 값이 같은지를 확인한다. 왼쪽은 한 칸씩 오른쪽으로, 오른쪽은 한 칸씩 왼쪽으로 이동하면서 비교한다. 만약 비교한 값이 다르면 팰린드롬이 아니고 모두 같으면 팰린드롬이다. 코드 class Solution { public boolean isPalindrome(String s) { s = s.toLowerCase(); St..