문제https://leetcode.com/problems/valid-parentheses/ 1.function isValid(s: string): boolean { const map = { ')': '(', '}': '{', ']': '[' } const stack = []; for (let char of s) { if (char === '(' || char === '{' || char === '[') { stack.push(char); } else { const pop = stack.pop() const mappp = map[char] co..
코딩테스트
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBfzmD%2FbtsLyVZ5dBl%2FhJsA5NKn5jeyuB4sxP3Gvk%2Fimg.png)
문제https://leetcode.com/problems/roman-to-integer/description/ 나열된 로마 숫자를 변환하는 문제큰 수부터 작은 수로 나열되는게 기본인데 다음 수가 더 큰 수라면 마이너스를 하면 된다.비교 대상은 딱 연속된 두 수뿐이라 순회하면서 크기 비교를 통해 더 작다면 +, 더 크다면 - 1.function romanToInt(s: string): number { const numbers = { I: 1, V: 5, X: 10, L: 50, C: 100, D: 500, M: 1000 }; const array = s.split(''); let res..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccxJyb%2FbtsLoh99eor%2FVpiY9ojrcPTLhfOOOpl3V0%2Fimg.png)
문제https://leetcode.com/problems/palindrome-number/description/ Palindrome : 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 문자열 등 앞뒤 똑같으면 true, 다른게 있으면 false 반환 1. function isPalindrome(x: number): boolean { const string = x.toString().split(''); let left = 0; let right = string.length - 1; while(left 주어진 number 를 string[] 으로 만들어 앞뒤로 하나씩 비교하며 뱉어냈다. 2. 다른 사람 풀이function isPalindrome(x:..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcH999w%2FbtsLm44jWkM%2FiY07j2iOn024RkOoydePQ1%2Fimg.png)
문제https://leetcode.com/problems/add-two-numbers/ 연결 리스트는 자료구조 면접 준비할 때 처음 개념 접한 것 외에는 아는 게 없어서 우선 얘를 보통 어떻게 구현하고 어떻게 사용하는지를 알아봤다. 문제에 사용되는 연결리스트 클래스/** * Definition for singly-linked list. * class ListNode { * val: number * next: ListNode | null * constructor(val?: number, next?: ListNode | null) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefin..
문제https://leetcode.com/problems/two-sum/description/ 1. 그냥 풀어보자function twoSum(nums: number[], target: number): number[] { for (let i = 0; i for 문으로 순회하면서 모든 요소들을 다 찾아보고 있으니까 당연히 최선의 방법이 아니다.그런데 무슨 방법이 있는지 모르니까 일단 이렇게 했다!얘처럼 모든 경우의 수를 구하는 방법을 부르트 포스라고 한다.2중 for 문으로 돌기 때문에 시간복잡도가 O(n^2)이다. 다른 방법은 Solutions 를 봤다2. HashMap 사용function twoSum(nums: number[], target: number): number[] { co..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJHoOo%2FbtsEhXqw8Zu%2Fx8IZiruTXEzLmse79kXc0k%2Fimg.png)
문제 | 배열 원소의 길이 https://school.programmers.co.kr/learn/courses/30/lessons/120854 내 풀이 class Solution { fun solution(strlist: Array): IntArray = strlist.map { it.length }.toIntArray() } map 으로 각 원소를 바로 길이로 바꿨다. 문제 | 피자 나눠 먹기 (1) https://school.programmers.co.kr/learn/courses/30/lessons/120814 다른 사람 풀이 import kotlin.math.* class Solution { fun solution(n: Int) = ceil(n/7.0).toInt() } ceil(Double) 올..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FspILI%2FbtsEbDfwV9A%2FaU2SPGnzQ9SKYFbwnSdGEK%2Fimg.png)
레벨 2 넘어가니까 푸는게 힘들어져서 레벨 0,1 다시 쌓고 올라가기 🚩 코틀린스럽게 풀어보기... 0레벨 매일 최소 3문제 문제 | 머쓱이보다 키 큰 사람 https://school.programmers.co.kr/learn/courses/30/lessons/120585 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 class Solution { fun solution(array: IntArray, height: Int): Int { var answer = array.filter{it > height}.count() return answer }..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMNaAa%2FbtsDW3cFOMM%2FXoWDIhLtnsMtQUBKYMWdZk%2Fimg.png)
배열에서 세 요소의 합이 0 이 되는 경우의 수를 찾는다. 내 풀이 class Solution { fun solution(number: IntArray): Int { var answer: Int = 0 if(number.size == 3 && number.sum() == 0) { return 1 } else if (number.size == 3 && number.sum() !=0) { return 0 } for(i in 0..number.size-3) { for(j in i+1 .. number.size-2) { for(k in j+1 .. number.size-1) { if(number[i]+number[j]+number[k] == 0) { answer += 1 } } } } return answer ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdnouju%2FbtsDNp9psO3%2FQFyYKM9KMwJHAuW8K8i2Rk%2Fimg.png)
실패한 풀이 class Solution { fun solution(n: Int, m: Int): IntArray { var answer = intArrayOf().toMutableList() if(m %n != 0) answer.add(1) else answer.add(n) answer.add((n*m)/answer[0]) return answer.toIntArray() } } 경우의 수를 if 문으로 나눠봤다. 실패한 풀이 2 class Solution { fun solution(n: Int, m: Int): IntArray { var answer = intArrayOf().toMutableList() if(m %n == 0) { answer.add(n) answer.add(m) } else if (n..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6trET%2FbtsCSAWPTKr%2F9tqvrbEmaF3a1k1imCymK1%2Fimg.png)
정렬을 해서 인덱스가 0인 요소를 제거하면 순서가 바껴서 그대로 반환할 수 없다. 풀이 실패 요소를 제거하기 위해 array가 아닌 다른 컬렉션으로 바꾼 뒤 제거하고 다시 array로 반환해야 한단다. 다른 사람 풀이 class Solution { fun solution(arr: IntArray): IntArray { var answer = intArrayOf() var arrs = arr.toMutableList() // MutableList 로 변환 arrs.remove(arrs.minOrNull()) // minOrNull()로 최솟값 제거 answer = arrs.toIntArray() // 다시 IntArray 로 변환 if(arrs.size == 0) answer = intArrayOf(-1)..