99클럽 코테 스터디 3기 2일차 TIL - 135807 숫자 카드 나누기
135807. 숫자 카드 나누기 / c++ / level2 / 13분
문제 및 코드 (링크)
접근 방식
완전 탐색
- arrayA의 원소들의 최대공약수가 arrayB의 모든 원소를 나눌 수 없다면 (나머지가 0이 아니라면) 그 수를 A라고 하고
- 반대로 arrayB의 원소들의 최대공약수가 arrayA의 모든 원소를 나눌 수 없다면, 그 수를 B라고 했을 때, A와 B 중 큰 수를 반환하는 문제
- 재귀로 arrayA의 최대 공약수를 구한다.
- arrayB의 모든 원소에 대해 arrayA의 최대 공약수가 나눠지는 지 확인
- 나눠진다면 answer는 (1번에 해당하는 수가 없으므로) 0, 나눠지지 않는다면 answer를 arrayA의 최대공약수로 설정
- 3번 4번 로직을 arrayB에 대해서도 수행
- 마지막에 answer와 arrayB의 최대공약수 중 큰 수를 answer로 설정 (둘 중 하나라도 0인 수가 있다면 그 수는 무시됨, 둘 다 0이라면 0, 둘 다 0이 아니라면 둘 중 큰 수가 answer가 됨)
- ansewr를 반환
- 해결
생각해 볼 점
- arrayA에 대한 최대공약수 체크 (접근 방식의 3번에서 5번)까지만 해놓고 문제가 안풀려서 조건을 한참 찾았다.
- 다시금 문제를 잘 읽어야겠다는 생각이 들었다.
- 회사를 퇴근하고 문제를 풀려니 생각보다 힘들지만, 그래도 꾸준히 해야겠다.
해시태그
#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL