알고리즘 공부를 위해 코드업 사이트(https://codeup.kr/)의 기초 100제를 시작합니다.

블로그에 올라온 모든 코드는 파이썬(Python)으로 작성되어 있습니다.   

 

Python의 기초 100제를 확인하기 위해서는 다음 사이트로 이동하면 됩니다. 

https://codeup.kr/problemsetsol.php?psid=33 

 

문제집 / Python 기초 100제

 

codeup.kr

 

6086 : [기초-종합] 거기까지! 이제 그만~(설명)(py)

1, 2, 3 ... 을 순서대로 계속 더해 합을 만드는데,
그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자.

즉, 1부터 n까지 정수를 하나씩 더해 합을 만드는데,
어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.

하지만, 이번에는 그 때 까지의 합을 출력해야 한다.

예를 들어, 57을 입력하면
1+2+3+...+8+9+10=55에서 그 다음 수인 11을 더해 66이 될 때,
그 값 66이 출력되어야 한다.

 

▷ 참고

조건문이나 반복문의 코드블록 안에서 break 가 실행되면,
반복실행을 중단(break)하고, 가장 가까운 반복 블록의 밖으로 빠져나간다.

 

▷ 해설

while문의 조건이 거짓일 경우 반복문을 빠져나오게 된다. 그래서 sum이 n보다 작을경우 참이 되므로 커지기 전까지느 반복문이 작동하게 된다.

이후 c라는 값과 sum을 통해 c는 매 반복마다 1씩 증가하고 sum은 증가된 값이 더해지는 코드를 구현했다

n = int(input())

c = 1
sum = 0
while sum < n:
   sum += c
   c += 1

print(sum)

 

6087 : [기초-종합] 짝수 합 구하기(설명)(py)

1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되,
3의 배수인 경우는 출력하지 않도록 만들어보자.

예를 들면,
1 2 4 5 7 8 10 11 13 14 ...
와 같이 출력하는 것이다.

 

▷ 참고

조건문이나 반복문의 코드블록 안에서 continue 가 실행되면,
반복 블록 안에 있는 나머지 부분을 실행하지 않고, 다음 반복 단계로 넘어간다.
즉, 반복 블록의 나머지 부분은 실행되지 않고, 다음 단계의 반복을 계속(continue)하는 것이다.

 

▷ 해설

만약 i가 3의 배수라면 if문에 걸려서 continue되기 때문에 밑의 코드가 남아있어도 다음 i로 넘어가게 된다.

그래서 밑의 print문은 else로 묶어주지 않아도 3의 배수가 아닌 값만 출력한다

n = int(input())

for i in range(1, n+1):
    if i % 3 == 0:
        continue
    print(i, end = " ")

 

6088 : [기초-종합] 수 나열하기1(py)

어떤 규칙에 따라 수를 순서대로 나열한 것을 수열(sequences)이라고 한다.

예를 들어
1 4 7 10 13 16 19 22 25 ... 은
1부터 시작해 이전에 만든 수에 3을 더해 다음 수를 만든 수열이다.
이러한 것을 수학에서는 앞뒤 수들의 차이가 같다고 하여

등차(차이가 같다의 한문 말) 수열이라고 한다. (등차수열 : arithmetic progression/sequence)
수열을 알게 된 영일이는 갑자기 궁금해졌다.

"그럼.... 123번째 나오는 수는 뭘까?"

영일이는 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다.

시작 값(a), 등차(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때
n번째 수를 출력하는 프로그램을 만들어보자.

 

▷ 해설

n번 만큼 a에 d를 더하는 식을 코드로 작성하면 된다.

a, d, n = map(int, input().split())

for i in range(1, n):
    a += d

print(a)

 

6089 : [기초-종합] 수 나열하기2(py)

어떤 규칙에 따라 수를 순서대로 나열한 것을 수열(sequences)이라고 한다.

예를 들어
2 6 18 54 162 486 ... 은
2부터 시작해 이전에 만든 수에 3을 곱해 다음 수를 만든 수열이다.

이러한 것을 수학에서는 앞뒤 수들의 비율이 같다고 하여
등비(비율이 같다의 한문 말) 수열이라고 한다. (등비수열 : geometric progression/sequence)

등비 수열을 알게된 영일이는 갑자기 궁금해졌다.
"그럼.... 13번째 나오는 수는 뭘까?"
영일이는 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다.

시작 값(a), 등비(r), 몇 번째인지를 나타내는 정수(n)가 입력될 때
n번째 수를 출력하는 프로그램을 만들어보자.

▷ 해설

6088과 비슷하지만 이번엔 수열이 r만큼 곱한 값이 다음 수로 들어오게 된다.  

a, r, n = map(int, input().split())

for i in range(1, n):
    a *= r

print(a)

 

6090 : [기초-종합] 수 나열하기3(py)

어떤 규칙에 따라 수를 순서대로 나열한 것을 수열(sequences)이라고 한다.

예를 들어
1 -1 3 -5 11 -21 43 ... 은
1부터 시작해 이전에 만든 수에 -2를 곱한 다음 1을 더해 다음 수를 만든 수열이다.

이런 이상한 수열을 알게 된 영일이는 또 궁금해졌다.
"그럼.... 13번째 나오는 수는 뭘까?"

영일이는 물론 수학을 아주 잘하지만 이런 문제는 본 적이 거의 없었다...
그래서 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다.

시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때,
n번째 수를 출력하는 프로그램을 만들어보자.

 

▷ 해설

위의 식과 유사하지만 a에 곱한 뒤 더하는 연산을 수행해서 답을 구한다.

a, m, d, n = map(int, input().split())

for i in range(1, n):
    a = a * m + d

print(a)

 

+ Recent posts