개발자 호소인
20230725 하계 모각코 4회차 본문
이번 회차에서도 마찬가지로 codetree의 문제들을 풀어보며 알고리즘 실력을 키워보도록 하자.
지금까지 배웠던 것을 정리해보는 문제이다.
먼저 입력을 받고 , 평균학점을 받아야 하니 각 과목 학점의 총 합을 얻는다.
그리고 총 갯수로 나누어 평균학점에 해당하는 등급을 출력하면 된다.
여기서 우리가 눈여겨볼 것은, 파이썬의 나눗셈은 자바나 c와 사뭇 다르다는 것이다. 만약 자바에서의 실수형(소숫점) 나눗셈을 해야 한다면,
float a = float(ten / four );
과 같은 식으로 형변환이 필요하다. 하지만 파이썬은 따로 형변환을 해줄 필요가 없다.
이제 dy,dx 테크닉에 대해 배워보도록 하자.
예를 들어
와 같이 좌표를 활용하여 나오는 문제들은 어떻게 풀어 볼 수 있을까?
물론 if문을 여러번 활용하여 조건에 맞추어 그에 따른 작업을 수행하면 된다. 하지만 이렇게 된다면 비슷해보이는 코드가 반복되게 된다. 우리는 특정 방향에 대해 이동하는 경우 dx, dy 테크닉을 사용할 수 있다.
dx dy는 고등학교 수학시간에 배웠듯 delta x , delta y 즉 x축에 대한 좌표와 y축에 대한 좌표에 대한 변화량 값을 의미한다.
이러한 부분을 생각해보았을 때, 우리는 배열을 이용하여 코드를 다시 구성해 볼 수 있다.
다시, 각 배열에 x와 y에 맞는 변화량 값을 같은 인덱스에 넣어준다면, 위의 두 코드처럼 굳이 if문을 사용하여 조건을 여러번 검사할 필요 없이 각 배열의 인덱스에 맞게끔 dir 좌표가 변화하므로, 입력값에 대하여 변화된 출력값이 올바르게 나온다는 것을 알 수 있다,
이 테크닉을 활용하여 문제를 풀어보도록 하자.
마찬가지로 동서남북 방향 순으로 x좌표와 y좌표의 변화량 값을 배열에 각각 저장해준다.

전체 코드는 다음과 같다.
1학기 때, c언어를 배우면서 비슷한 문제를 풀어본 적이 있다. 그때는 각 조건에 맞추어 if문을 여러번 쓰는 동안 실수가 많이 생겨 꽤 어려웠던 문제로 느껴졌었지만, 배열에 저장을 하여 좌표를 찍는 연습을 하다 보니 그렇게 어렵게 느껴지지는 않았다.