https://school.programmers.co.kr/learn/courses/30/lessons/138476
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
보자마자 첫 느낌 :
sort 의 활용도를 묻는 문제이며, 객체를 다뤄야할 수도 있을 것 같은 느낌
풀다보니 객체로 다 가능할지도...?
객체로 키값 : 갯수로 담은 후
갯수가 큰 순으로 k 값을 담으면 쉽게 풀리지않을까 싶은데
또 어떤 함정이 기다리고 있을까
여기서 잠깐 기초다루기
[1, 3, 2, 5, 4, 5, 2, 3] 이런 배열을 key value 로 갯수를 세서 정리하는 법
이렇게 하면 키값이 있는지 검사하고 있으면 ++ 를 없으면 1을 부여하는 식으로 하는데
이걸 3항연산자로 간단하게 바꾸려고 하면
과연 실행이 될까?
안됨
그 이유는 객체의 속성 값을 직접 변경하지 않고 keyValue 변수에 값을 할당한 후 변경을 시도하기 때문임
keyValue는 객체의 속성 값이 아니라 그 값의 복사본을 참조함
그래서 이렇게 써야 함
++도 쓰면 안된다
obj[key]++는
obj[key] = obj[key] + 1 과 같으므로
obj[key]를 반환하므로 그냥 무조건 1이 됨
{ '1': 1, '2': 1, '3': 1, '4': 1, '5': 1 } |
로 출력 됨
아무튼 이제 키, 밸류 객체로 바꿨으니
아무래도 정렬을 결국 해야하는데
객체 자체를 정렬할 순 없으니
객체를 키- 값 쌍의 배열로 변환하고 그 배열을 정렬할 것임
그리고 추출할 예정
이렇게 뽑힌다
그 다음 k의 값이 0이나 음수가 될 때까지 while 문으로
정렬한 value 값들 shift 해주면서 count 해주면 끝!
이게 잘 안되면 내림차순이 아닌 오름차순 정렬 후 pop 을 해줄 생각이었는데
그냥 통과됐다
'algorithm > 문제풀이' 카테고리의 다른 글
괄호 회전하기 (1) | 2024.07.08 |
---|---|
연속 부분 수열 합의 개수 (원형 수열) (0) | 2024.07.05 |
영어 끝말잇기 (0) | 2024.07.02 |
연습문제 > 멀리 뛰기 (0) | 2024.07.01 |
2017 팁스타운 > 예상 대진표 (1) | 2024.06.30 |