자료구조와 알고리즘/SW Expert Academy

[SW Expert Academy][D4][C++][Python] 1210 - Ladder1

최문경 블로그 2019. 10. 14. 22:41

https://swexpertacademy.com/main/code/problem/problemDetail.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

동아리 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이거나 범위를 벗어나면 방향을 다시 설정하기 때문이다.)