상세 컨텐츠

본문 제목

파이썬 약수 구하기 알고리즘 예제 풀이_복습2(3.30)

IT 공부/데이터분석

by 듀_77 2021. 4. 2. 17:57

본문

반응형

 

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에 받아주는 변수를 넣고,

문장을 넣어서 출력하기만 하면 끝!

반응형

관련글 더보기

댓글 영역