코테공부

프로그래머스 53일차 - 해시 문제 모음 & 가격이 제일 비싼 식품의 정보 출력하기

알면 알 수록 재밌다! 2023. 4. 10. 22:33

1. 폰켓몬

해설

 

n/2 마리와 중복 제거한 마리수를 비교해서

그 안에서 알맞은 값을 리턴하는 것이다.

 

2. 완주하지 못한 선수

해설

해쉬 테이블(hash)를 사용해서 풀어보기로 했다.

파이썬에서는 해쉬를 별도로 구현할 필요 없음 - 딕셔너리 타입을 사용하면 되기 때문이라고 한다.

리스트든 어딜 저장할 때 해당 데이터를 메모리로 저장하고 있는 테이블이 있다.

그걸 이용하는 것이다.

값이 같다면 해당 hash값도 같을 것이다. 이걸 이용한다.

participate와 completion의 해쉬값을 비교해서 같으면 지우고 

없으면 그 hash값의 value를 리턴한다.(dictionary 구조에서 key, value를 사용하는 것과 같음)

 

3. 전화번호 목록

 

해설

위처럼 문제를 풀었다.

문자열 정렬해서 시간을 단축시키고

해쉬 테이블을 만들어서 리스트 내 요소를 비교한다.

 

해쉬의 장점은 중복값 판단이 좋다는 것.

이를 이용하면 된다.

 

4. 위장

해설

마지막에 다 안입는 경우를 빼주면 된다.

 

5. 베스트 앨범

 

해설

잘 이해가 안되서 다른사람 풀이를 보고 풀어봤다.

참고로 sorted를 쓰면 원래의 hash_map에 영향을 안줘서 사용했다.

sort를 썼으면 hash_map 이 바껴버려서 또 계산을 해줘야한다.

 

 


SQL 문제

1. 가격이 제일 비싼 식품의 정보 출력하기

틀린거
맞는거

서브 쿼리를 사용해서 그룹화를 한다음 해당 컬럼값을 비교하면 된다.

 

첫 번째 쿼리는 테이블 에 있는 모든 제품의 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, price의 최대값을 검색합니다 . 결과는 테이블에서 찾은 가장 높은 가격을 포함하는 하나의 행만 표시합니다.
두 번째 쿼리는 테이블에서 가격이 가장 높은 제품의 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY price 를 검색합니다 . 즉, 가장 높은 가격이 같은 제품이 여러 개 있는 경우 모두 결과에 표시됩니다.
따라서 주요 차이점은 첫 번째 쿼리는 하나의 행만 반환하는 반면 두 번째 쿼리는 동일한 최고 가격의 제품이 여러 개 있는 경우 여러 행을 반환할 수 있다는 것입니다.

위처럼 정렬한다음 내림차순의 첫번째 행만 리턴할 수도 있다.