본문 바로가기
알고리즘/프로그래머스

프로그래머스: 해시 - 포켓몬

by 패쓰킴 2024. 11. 8.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=python3

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

지원되는 언어에 Swift가 없긴 하지만 풀어보고 싶어서 풀어봄

 

GPT에게 테스트 케이스를 더 만들어 달라고 했고

Set을 이용하여 간단하게 풀어봄

 

GPT의 테스트 케이스 ->

# 테스트 케이스
test_cases = [
    # Case 1: 기본 예제 (폰켓몬이 4개, 서로 다른 종류 2개)
    ([3, 1, 2, 3], 2),  # 최대 선택 가능 폰켓몬 종류 수: 2

    # Case 2: 모든 폰켓몬이 같은 종류
    ([1, 1, 1, 1], 1),  # 최대 선택 가능 폰켓몬 종류 수: 1

    # Case 3: 모든 폰켓몬이 서로 다른 종류
    ([1, 2, 3, 4], 2),  # 최대 선택 가능 폰켓몬 종류 수: 2

    # Case 4: 종류가 3개, 폰켓몬은 6개
    ([3, 3, 3, 2, 2, 1], 3),  # 최대 선택 가능 폰켓몬 종류 수: 3

    # Case 5: 종류가 5개, 폰켓몬은 8개
    ([1, 2, 3, 4, 5, 3, 2, 1], 4),  # 최대 선택 가능 폰켓몬 종류 수: 4

    # Case 6: 종류가 6개, 폰켓몬은 12개 (각 종류 2개씩)
    ([1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6], 6),  # 최대 선택 가능 폰켓몬 종류 수: 6

    # Case 7: 종류가 7개, 폰켓몬은 7개
    ([1, 2, 3, 4, 5, 6, 7], 3),  # 최대 선택 가능 폰켓몬 종류 수: 3

]

# 각 케이스는 (입력값, 예상 결과) 형식입니다.

 

풀이

let nums = 리스트
let canGet = nums.count / 2
let numsSet = Set(nums)

if numsSet.count > canGet {
  print(canGet)
} else {
  print(numsSet.count)
}
728x90

댓글