[프로그래머스] 조이 스틱(C++)

Hoo-Sung.Lee·2023년 9월 19일
0

코딩테스트

목록 보기
2/4

프로그래머스 조이스틱

프로그래머스 2단계 문제인데 어떻게 접근해야 할지 몰라서 많이 헤매었던 문제라 정리해보고자 합니다. 조이스틱의 상하 움직임은 쉬우므로 생략하도록 하겠습니다.


1. 문제설명 && 문제 접근 방법.

맨 왼쪽에서 왼쪽으로 이동하면 맨 오른쪽으로 거리 1만에 이동할 수도 있는것이 이 문제의 핵심 같습니다.
++) 조이스틱의 맨 처음 시작위치에 대한 설명이 문제에 잘 명시되어 있지 않았는데,
조이스틱은 처음에 name[0]인 위치에서 시작합니다.!!!

위의 사진을 보시면 임의의 A가 아닌 점 C를 잡고, C 이후에 나오는 A가 아닌 지점 B를 잡습니다.
C의 인덱스를 i, B의 index를 idx라고 하면,

조이스틱의 최소 좌우 이동거리는
i) 한 방향으로 쭉 이동하는 경우(최대): n-1
ii) 2a+b
iii) 2b+a
조이스틱 최단 이동거리(좌,우)=min(2a+b,2b+a)=a+b+min(a,b)=i+n-idx+min(i,n-idx)
이라는 수식을 얻을 수 있다.

답은 조이스틱의 상하 이동 거리에, 조이스틱 좌,우 최단 이동거리를 더하면 된다.


2. 문제 풀이.

코드는 아래와 같다

코드는 매우 간결한데, 수식을 생각해내기 어려운 문제였던 것 같다. 비슷한 문제를 많이 연습해봐야겠다는 생각이 들었다.😄

profile
Working towards becoming Backend-Developer

0개의 댓글