https://swexpertacademy.com/main/code/problem/problemDetail.do
동아리 CSI (Char String Int) 에서 푼 문제인데 나는 안 풀려서 구글링으로 풀었다.
다른 분은 푸셨는 데 정말 깔끔 그 자체...!
내가 구글링으로 푼 풀이 (Python)
내가 푼 풀이를 요약하면
방향에 따라(왼쪽, 오른쪽, 위의 순서대로) x, y가 다음 움직일 위치(to_x / to_y)를 정하고, 그 위치가 맞는 위치인지 확인하고(if문) 아니면 방향을 바꾸고(continue) 맞으면 움직인다.(x = to_x / y = to_y)
다른 동아리 부원이 푼 풀이 (C++)
이 풀이를 요약해보자.
먼저, 내 풀이는 2차원 배열에서 앞의 인덱스가 가로였지만, 여기서는 앞의 인덱스가 세로이다.
먼저, 내 풀이와 같이 2차원 배열을 선언하고 입력을 받은 값들을 넣어준 후, 2의 위치를 먼저 찾는다.
그리고 가로( j )가 감소하는 for문 안에 어디로 갈지 정해주는 while문을 써주고 2차원배열(map)의 오른쪽 또는 왼쪽에 1이 있으면 goal(현재 위치)(세로)를 더하거나 빼준다.
만약 0이라면 break문을 통해 while문을 빠져나가고 j가 감소한다.(위로 올라간다.)
< 내 생각 >
내가 구글링으로 푼 풀이보다 다른 동아리 부원이 푼 풀이가 훨씬 직관적인 것 같다. 그리고 더 효율적인 코드같다. (내 풀이는 만약 왼쪽이 0이거나 범위를 벗어나면 방향을 다시 설정하기 때문이다.)
'자료구조와 알고리즘 > SW Expert Academy' 카테고리의 다른 글
[SW Expert Academy][D3][C++] 7102 - 준홍이의 카드놀이 (0) | 2019.10.14 |
---|