문제는 어렵지 않다
다만 구현하는 게 어색해서 힘들었다
최근에 JS만 하다 보니.. 함수 만들어 쓰는 게 더 편해져서
냅다 함수 없이 적으니 계속 오류가 났다..
그리고 함수 만들어서 푸니 한방에 풀렸다..
우리가 가져야 할 목표는 두 개 정도 있다
1. 수열에 들어온 100만 이하의 수가 소수인지
2. 그 값이 소수면 그 값들을 모아 최소공배수를 구한다
자, 그럼 일단 소수인가부터 생각해보자
100만.. 이하가 아니더라도 에스 뭐인가 체를 쓰는 것이 문제를 푸는데 큰 도움이 된다
십중팔구 이놈의 소수 구하기는 일단 큰 수를 주기 때문이다..
그래서 에스뭐시기체의 이론을 이용해.. 구하려는 값의 제곱근수 까지만 수를 검사한다
이유는 다음 그림을 보면 쉽게 이해할 수 있다
파이썬 제곱근은.. math를 쓸 수도 있으나
귀찮으니 그냥 **0.5로 처리해주자 그리고 소수점을 나누라 하면 또 오류 날 수 있으니
int를 씌워 소수점을 삭제하고 +1을 해주자
그리고 개인적인 습관으로 소수 문제 풀 때는 2, 3, 5, 7은 냅다 소수로 넘겨서 푸는 걸 좋아한다
모르겠다 그냥 이게 보기 편하다 수 세는 게 더 편해지는 느낌이라 이렇게 넣는다.. (안넣어도 문제푸는데는 상관없다)
그러고 나서 num으로 받은 숫자를 2부터 시작하여 나머지를 구한다
0이면 False리턴
0이 없었다면 for문을 다 돌고 True 리턴
그럼 함수는 넘겨받은 값의 결과를 불리언으로 넘겨준다.. 이제 전체 코드를 보자
(2, 3, 5, 7은 지워주고 ..)
소수 문제를 풀 정도면 sys는 다들 알 것이고..
input() 하나만 딸랑 둔 것은
어차피 ary를 set으로 받아
for로 바로 돌리기 때문에 필요가 없기 때문
그리고 ary를 for문을 돌려준다
그리고 for값을 sosuni에 넣어 참 거짓을 판단한 뒤
참이면 sosu에 k를 그대로 곱해준다
그리고 마지막에 sosu를 출력하는데
조건은 sosu가 1이 아닌 경우 sosu, 만약 1인 경우에는 -1을 출력하라는 문을 걸어준다
그리고 코드의 공백들을 더 줄여서 빅 -숏코딩 빌런을 해보았다..
202b짜리 코드를 보긴 했는데 저건 파이썬 교수 아니면 못할 것 같다
---
근 2달 동안 브론즈 문제만 푼다고 문제 푸는 맛을 잊어버리고 있었는데
오늘 그래도 약간 긴 코드의 문제를 푸니 기분이 매우 좋았다
이 맛을 잊고 있었다니.. 흑흑.. 앞으로 시간 나면 하나씩 풀어봐야겠다
'프로그래밍 > 파이썬' 카테고리의 다른 글
:: 재활을 해보자 .. (0) | 2022.10.27 |
---|---|
[파이썬][맥] vscode 에서 input.txt output.txt 로 입력값 결과값 넣기 (0) | 2022.06.29 |
[파이썬] 17362 수학은 체육과목 입니다 문제풀이 + 해설 사진 (0) | 2022.05.16 |
[파이썬] [알고리즘] 조건문 (0) | 2022.03.09 |
[파이썬] [알고리즘] 반복문 (0) | 2022.03.08 |