코딩테스트(5)
-
[프로그래머스] level3 : 베스트 앨범
1. 문제 설명 문제 설명 보러가기 2. 문제 해석 앨범에 수록될 곡의 우선순위는 아래와 같다. 1. 총 재생 수가 가장 많은 장르 부터 수록한다. 2. 같은 장르 내에서는 재생 수가 많은 곡 순으로 수록한다. 3. 만약 같은 장르 내에서 재생 수가 같다면, 고유번호가 작은 것을 먼저 수록한다. 4. 장르 별로 가장 많이 재생된 노래를 최대 2개까지만 수록한다. ⭐️ 데이터의 흐름을 보면 아래와 같은 flow로 문제를 풀었다. 3. 문제 풀이 4. 소감 문제 카테고리가 해시였기 때문에 뭔가 배열이나 sort를 남용해서는 안 될 것 같았다. 그래서 어떻게 하면 해시 자료구조를 메인으로 사용하여 풀 수 있을까 고민하다가 오히려 머리가 복잡해져서 그냥 되는대로 풀어봤는데 의외로 성능이 잘 나와서 '어째서??..
2023.06.25 -
[프로그래머스] level1 : 소수찾기 (생각보다 많이 헤맨 문제)
1. 문제 설명 문제 설명 보러가기 2. 문제 해석 문제 자체는 쉽다. 주어진 숫자 n이 10이라고 가정했을 때, 1~10 까지의 숫자들 중 소수가 몇개인지를 리턴하는 문제다. 소수란, 1과 자기 자신, 이렇게 2개의 약수만 가진 수를 말하며 0,1은 제외된다. 소수로는 2,3,5,7,11... 등이 있다. 이 문제를 푸는건 쉽지만, 또한 쉽게 성능 테스트에서 fail이 난다. 왜냐하면 주어진 숫자 n의 최댓값이 1,000,000으로 상당히 큰 값이 주어지기 때문이다. 이렇게 대량의 데이터에서 소수를 찾을 때, 에라토스테네스의 체 알고리즘을 사용하면 성능을 챙길 수 있다. 이 문제를 해결하는 데 3일이 넘게 걸렸는데.. 성능 fail을 해결하지 못해 정답을 검색하다가 근의 공식을 활용하여 (Math.sq..
2022.12.29 -
재미로 하는 코테 공부 중간 점검
0문제 풀었던 때는 한 19만등인가 그랬는데, 한 문제 풀 때마다 2000등에서 크게는 20,000 등까지 확확 오르더니 금세 10만등 안에 들었다. 확확 등수가 오르니 재밌다. 주의할 것은 문제를 제출하기 전에 최대한 성능을 높인 상태로 하기 & console.log같은 코드들 다 지우기. 안그러면 등수 오르는 폭이 적어진다. 성능이 좋으면 좋을 수록 등수 폭이 크게 오름. 겁나 뿌듯하다고오옹~~
2022.12.15 -
[프로그래머스] level2 : H-Index 구하기
1. 문제 설명 문제 설명 보러가기 2. 문제 해석 이 문제는 이해하기가 너무 어려웠다. 이럴 경우 예제를 먼저 보고 값을 문제에 대입해보자. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고... 여기서 h가 H-Index가 된다. 아래는 내가 추가한 테스트케이스 들이다. 문제번호 주어진 논문 (input) return 1 [3, 0, 6, 1, 5] 3 2 [5, 5, 2] 2 3 [1, 1, 1] 1 4 [0, 0, 0] 0 5 [0, 0, 0, 1] 1 6 [4, 4, 4, 4] 4 7 [4, 20, 35, 60, 70] 4 여기서의 return값이 이해 되는가? 만약 안 된다면 예제를 보고 값을 문제에 대입해보자. 논문은 n편이 주어지는데, 1번의 경우 논문 갯수는 [..
2022.12.11 -
[프로그래머스] level1 : 문자열 나누기 (JS) feat.재귀함수
1. 문제 설명 문제 설명 보러가기 2. 문제 해석 문제를 처음에 잘못 해석해서 계속 테스트에 실패했다. 'x와 x가 아닌 다른 글자들이 나온 횟수를 각각 세어, 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리하기'를 나는 이렇게 이해 했다. 주어진 문자열 : "abracadabra" x = 'a' xCount : a(1)bra(2)ca(3)da(4)bra(5) => x에 해당하는 a를 모두 카운트 otherCount : ab(1)r(2)ac(3)ad(4)ab(5)r(6)a => x가 아닌 모든 문자를 모두 카운트 이 때 xCount와 otherCount가 같아지는 시점에서 문자열을 자르면 'abra', 'cad', 'ab', 'ra' 고로 잘라진 문자열의 덩어리 갯수는 => 4 ..
2022.12.10