Algorithm Study

[프로그래머스] 양궁대회(level2) / JAVA, DFS

hyun-1200 2022. 7. 23. 00:00

https://school.programmers.co.kr/learn/courses/30/lessons/92342

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

내가 푼 방식

 

STEP1 . 10점부터 0점까지 라이언은 이길건지/ 질건지 모든순열의 조합을 구해야 한다.

- 이길 경우: 어피치점수+1

- 질 경우: 0 점

(조건은, 양궁의 갯수를 확인하면서 점수를 메겨야 한다.) 

-> 우선 이부분은 DFS 로 푸는 방식이다. 

 

STEP2. 

모든 경의 수를 다 구했다면, 어피치와 라이언의 점수차이를 구한다.

- 어피치와 라이언의 점수가 같다면 어피치가 이긴다.

- 만약 점수차이가 같다면, 낮은점수가 많은 경우의 값을 답으로 리턴한다.

(여기서 자잘한 조건들이 많아서 따져줘야할 것들이 많았음..) 

- 라이언이 모든 양궁을 쏘지 못한채로 끝난경우라면, 양궁의 갯수를 마지막 인덱스에 채워넣어줘야했고.. 근데 여기서도 쫌 막혔음 ( tmp값으로 넣어줬다가 다시 원복해줘야한다.) 

- 점수 비교하는 부분에서, 라이언과 어피치가 둘다 0 이 아닌경우일때만 점수계산이 가능하다는 점

 

등등..

 

 

푸는 시간 거의 2시간 걸렸던것 같다 ㅠ.ㅠ

그리고 테스트케이스 23 에서 막혔었는데, 만약 라이언과 어피치의 점수가 같다면 -> 어피치의 승리다

 

즉 맨처음 초기화 부분에서 answer= -1 로 했는데,

answer=0 인 경우에도 answer= -1 과 동일하다는 것이다.

 

 

제출한 풀이. 

 

 

 

레벨2는 풀수는 있어도. 아직 많이 부족한 것 같다.