[250321] 야구 게임

ON&OFF·2025년 3월 21일

iOS TIL

목록 보기
8/18

1. 오늘 배운 것

  • 야구 게임 과제를 진행하는 데 있어 발생했던 문제점을 기술해본다.

2. 배우며 겪은 문제점

  • 일단 1~9 사이의 중복되지 않은 숫자들을 랜덤하게 3개 뽑아야 하는데, Set이 중복을 허용하지 않기 때문에 Set에 숫자들을 저장하려고 시도했다. 그리고 그대로 Set을 리턴하려고 보니, Set은 순서를 보장하지 않기 때문에 예를 들어 5,2,1을 넣으면 이 순서대로 저장되는 게 아니라는 문제가 발생했다. 야구 게임에서 핵심 중 하나가 순서기 때문에.. 이걸 해결하려고 시도했다.

3. 해결 방법

  • Set을 Array로 변환해서 순서를 지정해줄 수 있었다.

3.1 해결하려다 발생한 문제점

  • 그런데 Set을 Array로 변환하는 과정에서 Set은 내부에서 해시값 기반으로 저장되다 보니까 특정 패턴이 반복될 가능성이 있다는 사실을 알게 되었다.
    랜덤이라고 뽑았지만 여러 번 실행하다 보면 랜덤이 아니게 될 수도 있다는 것이었다..

3.2 재차 해결

  • 해당 문제점은 그 배열을 변환하며 .shuffled() 메서드를 사용하여 한번 더 섞어주므로써 완전한 랜덤 숫자를 뽑을 수 있게 되었다!

4. 느낀 점

  • Set이 순서가 없다는 건 알고 있었지만 정확하게는 순서를 보장하지 않는 것이고, 내부적으로는 해시값 기반으로 저장된다는 사실을 알게 되었다. 그리고 Set으로 중복을 제거했는데 다른 방법으로 중복을 제거하는 것도 해보고 싶다.

5. 다음에 진행할 것

  • 추가적인 야구 게임 기능 구현하기.
  • Set으로 중복을 제거했는데 다른 방법으로 중복을 제거하는 것도 해보고 싶다.
profile
안 되면 될 때까지

0개의 댓글