프로그래밍/파이썬
-
파이썬 시작, 백준 16561 파이썬 풀이2020.03.14
파이썬 시작, 백준 16561 파이썬 풀이
우리 대학교 학과에 소프트웨어학과임에도 불구하고 파이썬이 없어서 좀 아쉬웠는데 새로 생겼다.
전필이여서 뭐하는지 보지도 않고 일단 수강신청부터 했는데 나중에 군대 안갔다온 친구한테 물어보니까 C언어로 게임 만드는 것이라고 했다.
C언어로 어떻게 무슨 게임을 만든다는건지..ㅋㅋ 내가 잘 모르는 세계가 또 있겠거니 했다.
그런데 개강하기 전에 다시 확인해보니 파이썬으로 바뀌어 있었다. 올해부터 파이썬 과목이 새로 생겼나보다.
나는 그것도 모르고 C언어 공부만 주구장창하고 백준이나 풀고 있었는데 파이썬이였다니.. 아무튼 그래서 파이썬을 시작했다.
비록 브론즈이지만 나한테는 브론즈도 어렵다 ㅋ
이렇게 많은 문제를 풀며 C언어를 공부하고 있었는데 파이썬으로 바뀌다니..
아무튼 파이썬을 배워보고 싶었더 나에게는 좋은 소식이다.
나는 나도코딩님의 여섯시간짜리 파이썬 무료강의를 들었다. 그냥 하루만에 빨리 끝내버리려고 하였으나 지금 3일째 반정도밖에 못들었다. 생각보다 나는 게을렀다.
다 합치면 한 6시간정도 공부한 것 같은데 지금까지 파이썬을 공부해본 것을 생각해보면 C언어랑 많이 비슷하다. 그래서 더 헷갈리는 것 같다. 위 영상을 한 반정도 들었는데 문제를 좀 풀어봐야 할 것 같아서 백준의 기본적인 문제들을 풀어보고 있다.
중간에 컴파일 에러는 내가 바보같이 파이썬으로 풀고 C로 제출했기 때문이다.
지금 이 글을 쓰는 이유는 내가 풀고 있는 문제가 중간에 막혀서 이다.
그 문제는 바로 [백준 16561번 : 3의 배수]이다.
먼저 이렇게 풀었는데 for문이 세 번이나 들어가서 좀 걱정이 됐다. 그래서 다시 확인해보니 시간제한이 0.1초였다. 제출해보지는 않았는데 for문이 이렇게 많이 들어가는데 0.1초 안에 해결해내지 못할 것이 분명함으로 코드를 다시 짜야할 것 같다.
그래도 제출해봤다ㅋ
어떻게 해야할까..
결국 풀었다.(그 와중에 다 풀고 흥분해서 C로 제출함)
위에서 for문에 세 번 돌아서 시간 초과가 되었기 때문에 for문을 하나 없애주어 시간 안에 들어오게 바꿨다.
마지막 for문을 없앴다.
1부터 2994일 때까지 a와 b가 반복해서 for문을 돈다. 2994인 이유는 한 수가 2994일 때 2994 + 3 + 3이 되어 최댓값이 3000을 커버하기 때문이다.
그리고 8번 째 줄에서 세 수는 무조건 3의 배수여야 하며, c는 0이면 안된다. 위에서 a와 b는 1부터했기 때문에 0일리가 없으나 c는 0이 될 수도 있기 때문에 0이 되면 안된다는 조건을 달아주었다.
그리고 a와 b가 user보다 커지거나 c가 1보다 작아져서 음수가 되어버리면 안되기 때문에 이 부분도 추가하여 for문을 탈출하도록 해주었다.
브론즈 3 푸는데 30분 걸렸다.
보통 이정도 걸린다
+ 또 다른 풀이
09일 때 01
12일 때 03
15일 때 06
18일 때 10
...
이런식으로 계속 이어져 나가게 되는데 1, 3, 6, 10이 잘 보면 2, 3, 4이렇게 증가한다.
이런 점을 활용하여
이와 같이 코드를 짤 수도 있다.
for range에서 기존에는 두 수만 들어갈 수 있는 줄 알았는데 세 수까지 들어갈 수 있는 점을 알았다.
C언어의 for문과 작동 원리는 같다.
'프로그래밍 > 파이썬' 카테고리의 다른 글
파이썬 2차원 배열 입력받기 백준 2566번 (0) | 2020.03.19 |
---|---|
백준 17173번 배수 파이썬 풀이 (0) | 2020.03.16 |
파이썬 백준 15947번 아기 석환 (2) | 2020.03.15 |
백준 14624번 파이썬 풀이 (0) | 2020.03.15 |
백준 11718번 파이썬 try except 구문 기초 (0) | 2020.03.14 |