본문 바로가기
algorithm/문제풀이

연습문제 > 귤 고르기

by yongfront 2024. 7. 5.
반응형
SMALL

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 을 해줄 생각이었는데

그냥 통과됐다

 

728x90
반응형
LIST

'algorithm > 문제풀이' 카테고리의 다른 글

괄호 회전하기  (1) 2024.07.08
연속 부분 수열 합의 개수 (원형 수열)  (0) 2024.07.05
영어 끝말잇기  (0) 2024.07.02
연습문제 > 멀리 뛰기  (0) 2024.07.01
2017 팁스타운 > 예상 대진표  (1) 2024.06.30