[코드트리 챌린지] 2주차 - 시뮬레이션2

dev_Hyun·2023년 9월 13일
0

코드트리 챌린지

목록 보기
2/8

0) 들어가기 앞서

지난 1주차 실력진단 테스트에서 dfs, bfs 유형의 연습이 부족하다고 알려줬으나, 진행 중인 유형을 마무리하기 위해 시뮬레이션을 먼저 학습하였다. 부족한 유형을 학습하지 못해 지난 실력진단 결과와 비슷할 것이 뻔하지만, 보다 정확한 자기객관화를 위해 다시 실력 진단 결과를 받아보자.


1) 실력 진단 결과

실로 놀라운 결과였다. 기본 문제 4문항은 수월하게 풀이 후, 정밀 검사의 첫 번째 문항을 풀이 중 개인업무 때문에 시험을 중단했음에도 점수가 올랐다..! (뒷북 😅: 다시 자리로 돌아와 이어서 풀이하였을 때 테스트케이스는 통과하였다.) 왜..오른거지?

실력 진단 테스트이기에 주어진 시간동안만 응시가 가능해야 정확한 진단이 나오지만, 부득이하게 시험을 중지해야 하는 경우를 위해 일시중지 기능이 추가되면 유용할 것 같다! 단, 일시중지 기능이 활성화 된 경우 화면 블러처리를 통해 문제읽기 또는 풀이가 불가하도록 조치하면 어떨까?

점수 결과 이미지

1. 주요 내용

  • 순열을 쉽게 구현할 수 있게 도와주는 itertools.permutations()
import itertools

arr = ['A', 'B', 'C']
_list = list(permutations(arr, 3))
print(_list)

# 출력 : [('A', 'B', 'C'), ('A', 'C', 'B'), ... ]
  • 튜플을 언팩킹 하는 두 가지 방법
# 1) 변수에 값들을 각각 할당하기
a, b = (1, 2)
print(a)
print(b)

# 2) unpacking operator *
arr = [(1,2), (2,3)]
for e in arr:
   print(*e)

2. 학습계획

코드트리에서 추천한 다음 단계는 IL 단계의 DFS 이다. 다만 이번 2주차는 지난 1주차에 이어 시뮬레이션2 유형을 먼저 완료하되, 3주차부터는 실력진단 결과에서 추천하는 커리큘럼을 따라가보기로 결정했다.

  1. NM 단계 시뮬레이션2
  2. IL 단계 DFS

2) 2주차 학습 주요 내용

2-1) 배열기록

문제

리뷰

  • 먼저 나의 첫 풀이는 다음과 같은 흐름을 따랐다.
    • A로봇 B로봇이 이동했던 경로를 각각 기록 → 더 적게 움직인 로봇의 위치를 보정 → 두 로봇의 위치 차이를 새로운 배열에 저장 → 조건에 맞을 경우 정답 횟수 증가
  • 두 로봇의 위치 차이를 새로운 배열에 저장하는 과정이 불필요했다. 두 로봇의 위치 차이를 계산하는 과정을 조건이 만족하는지 검사하는 코드에서 수행해도 무방했다.

2-2) dx dy technique

문제

리뷰

  • 규칙을 찾는데 시간이 다소 소요됐다. 거울에 반사될 때 '해당 거울의 유형'과 '해당 거울에 어떤 방향으로 접근했는지'에 따라 다음 위치로 향하는 방향을 변경하는 방식으로 풀이하였다.
  • 해설과 토론창에서 알게된 방법은 비트 연산을 활용하는 방법이다. xor 연산은 0, 1 값을 반전시킬 때에도 x = x^1 형태로 많이 사용된다고 한다.

다시 풀어볼 문항 :

  • 시뮬레이션2 / dx dy technique / 거울에 레이저 쏘기 2
    : 비트 연산을 활용해 볼 것.
  • 시뮬레이션2 / dx dy technique / 가운데에서 시작하여 빙빙 돌기
    : 역순으로 회전하는 방법 대신 정순으로 회전하되, 방향 전환에 유의해 볼 것.
profile
공룡, 다람쥐 그리고 돌고래!

0개의 댓글