node.JS
코테연습 - 숫자 짝꿍
gurwhddl
2023. 2. 12. 21:40
'3415' '1425' 라는 두 수(문자열)에서 공통으로 나타나는 정수를 이용해서 만들 수 있는 가장 큰 수를 만들어서 문자열로 return하는 문제
어려운 점은 3 ≤ X, Y의 길이(자릿수) ≤ 3,000,000 이라서 for문 중첩 - 이런거하면 절대 안풀림
또 배열로 바꾸거나 문자열을 형변환하고 하면 안풀린다고함 (이것까진 생각도 못했는데...)
- 일단 indexOf , includes , replace 이런 메서드들은 시간복잡도가 오지게 높아서 이걸 쓰면 좀 안풀리는거 같음
- 그래서 그냥 X에서 for of문으로 0~9까지 숫자가 몇개가 있는지를 찾아서 배열에 index순으로 넣음(4면 arr[4]에 1++하는 식으로)
- 그리고 중첩 안시키고 따로 for of문으로 4면 arr[4]의 값이 1 이상이다 ? 중복이라는 소리 - twins라는 빈 배열에 넣고
- X에선 4가 한개 있고, Y에서는 4가 2개 있는 경우도 있기 때문에 중첩됐으면 -1을 해줌
- 그 이후로는 그냥 내림차순해서 하나씩 붙여서 문자열로 리턴해주면 되는데 -
지금 생각난건데 그냥 join 해주면 됐을듯. 왜 통과된거지 - 여기서 짝꿍이 없으면 ? '-1'을 리턴하고 짝꿍이 다 0이면 ? '0'을 리턴해야되는데 이게 은근 헷갈렸는데 다른사람들 풀이 보니까 다들 비슷하게 한듯?
- 팁)문자열에 + 붙이면 숫자됨 - map((i) => +i) 이런거 해주면 전체 문자열 배열 다 숫자로 바꿀 수 있음