알고리즘 공부를 위해 코드업 사이트(https://codeup.kr/)의 기초 100제를 시작합니다.
블로그에 올라온 모든 코드는 파이썬(Python)으로 작성되어 있습니다.
Python의 기초 100제를 확인하기 위해서는 다음 사이트로 이동하면 됩니다.
https://codeup.kr/problemsetsol.php?psid=33
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)
'공부' 카테고리의 다른 글
코드업 파이썬(Python) 기초 100제 - 6095번 ~ 6098번 (0) | 2021.06.29 |
---|---|
코드업 파이썬(Python) 기초 100제 - 6091번 ~ 6094번 (0) | 2021.06.29 |
코드업 파이썬(Python) 기초 100제 - 6081번 ~ 6085번 (0) | 2021.06.29 |
코드업 파이썬(Python) 기초 100제 - 6076번 ~ 6080번 (0) | 2021.06.19 |
코드업 파이썬(Python) 기초 100제 - 6071번 ~ 6075번 (0) | 2021.06.19 |