Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자 호소인

20230725 하계 모각코 4회차 본문

카테고리 없음

20230725 하계 모각코 4회차

muk muk 2023. 7. 29. 19:38

이번 회차에서도 마찬가지로 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좌표의 변화량 값을 배열에 각각 저장해준다. 

 

dxs, dys = [1, -1, 0, 0], [0, 0, -1, 1]
문제에서는, 걸린 시간을 조사하라고 했으니 시간 변수를 선언하여 걸린 시간을 확인해 주면 된다. 
elapsed_time = 0

전체 코드는 다음과 같다. 

 

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