3.30
파이썬 약수구하기 알고리즘에 대해 배웠다.
1. 다음의 결과와 같이 임의의 양의 정수를 입력받아,
그 정수의 모든 약수를 구하십시오.
위 문제는 어떻게 풀까?
컴퓨터는 약수를 뽑아내는 방법을 모른다.
그래서 최대한 코딩의 기본적 지식을 이용해서,
컴퓨터가 알아먹을 수 있도록 명령을 해줘야 한다.
알고리즘 문제를 풀 때는 먼저 종이에 적어보는 습관을 들인다.
간단하게 9의 약수를 구하는 문제에도
위와 같은 논리적인 과정이 들어간다.
아직 익숙하지 않지만, 몇 가지 문제를 풀어본 결과
알고리즘은 일종의 추리력 문제같다.
하나씩 단서를 잡아서, 거슬러 올라가다 보면
실마리가 하나씩 잡힌다.
[파이썬약수 구하기_과정]
1. 9의 약수는 1,3,9
2. 1,3,9로 9를 나눴을 때, 나머지가 0이 되는 사실 발견!
3. % (나머지 연산자)를 이용한다.
4. 만약 7295의 약수를 구하는 문제라면,
1~ 7295 ( = 1 ~ N ) 까지
for문으로 돌린다.
그리고 조건 (if) 으로, 나머지가 0이 되는 것들을
선별하면 끝!
→ 나머지 0이 되게 하는 것 = 곧 약수
----
간단한 문제에도 위와 같은 사고 과정이 필요하다.
그래서 코딩이 어려운 것. ㅠㅠ
여기서 중요한 점은
print로 뽑아낼 때!
혹은 변수를 뽑아내는 코딩 작성 시에!
print("% (i)d (은) 는 % (a) d의 약수입니다. " % ( { "i" : , "a" : a } )
-위 포맷팅을 기억할 것!
-무엇이 변수(변하는 값)이고, 고정값인지 구분하기.
위의 a는 변수
i는 for문의 index값이라고 할 수 있겠다.
그래야 어디에 뭐가 들어가는지 정확하게
알고리즘을 짤 수 있기 때문이다.
위에서 그냥 약수를 구했다면,
이제 여기에 '소수'까지 판별해주는 예제를 풀어보기로 했다.
- ㅇ은 약수입니다.
- ㅇ은 소수입니다.
위 문장을 출력하도록, 해보기!
역시 for문과 if문을 통해서 약수를 골라내주는 게 핵심!
여기에 count라는 변수를 추가한다.
*count 변수 역할:
약수의 개수를 셈.
-for문은 1부터 n까지 반복
-range함수는 엔드값이 하나 더 적게 출력된다.
(-1)
→그래서 원래 값을 출력하게 하고 싶으면
a+1을 해야됨!
count 변수= 약수 개수
→ a를 i로 나눈 나머지가 '0' 일 때,
count 변수를 1을 더한다.
*최종: 즉, 약수 개수가 2개일 때,
( if count ==2: )
print( 소수 출력 ) 되도록 한다.
대문자를 판별하는 코드도 위와 비슷하다.
역시 if문을 사용해서
1. a~z의 범위 지정
2. A~Z의 범위 지정
하면 소문자인지 대문자인지 말해준다.
위 코드도 마찬가지!
print에 받아주는 변수를 넣고,
문장을 넣어서 출력하기만 하면 끝!
정올 출력-자가진단(1~8번 문제) 파이썬으로 풀이_과제1 (0) | 2021.04.29 |
---|---|
파이썬 조건문, 반복문(if,else,elif,for)_복습1 (3.16) (0) | 2021.04.22 |
for i in range(a,b) 쓰는 법 및 알고리즘 작성 팁 _ 복습 1 (3.30) (0) | 2021.03.30 |
파이썬패키지 정리 및 name is not defined 오류 (0) | 2021.01.11 |
파이썬 Decorator 개념완벽정복 (0) | 2020.07.19 |
댓글 영역