모각코 첫번째 회의 후 PART1. 튼튼한 기본기를 풀며 준비운동을 했습니다!
쉬운 문제를 풀며 자신감도 올리고 기본적인 문법을 복기하기 좋았습니다. ㅎㅎ
✏️ 준비운동 PART1. 튼튼한 기본기
- 약수 구하기 (🥉 브론즈 3티어)
- 이진수 (🥉 브론즈 3티어)
- 최소, 최대 (🥉 브론즈 3티어)
- 지능형 기차 2 (🥉 브론즈 3티어)
- 피보나치 수 5 (🥉 브론즈 2티어)
- 일곱 난쟁이 (🥉 브론즈 2티어)
- 최대공약수와 최소공배수 (🥈실버 5티어)
- N번째 큰 수 (🥈실버 5티어)
- 소수 찾기 (🥈실버 4티어)
- 쉽게 푸는 문제 (🥈실버 4티어)
- 소수 (🥈실버 4티어)
1. 약수 구하기
import sys
input = sys.stdin.readline
N, K = map(int,input().split())
answer_list = []
for num in range(1,N+1): # 1부터 N까지 순회하면서
if N % num == 0: # num이 N의 약수이면
answer_list.append(num) # answer_list에 추가
if len(answer_list) < K: # K번째 약수가 존재하지 않을 경우
print(0)
else: # K번째 약수
print(answer_list[K-1]) # 출력
2. 이진수
import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
number = int(input())
one_position = [] # 1의 위치를 저장하는 리스트
# bin(number)는 '0b'로 시작하므로 2번째부터 시작하는 이진수 거꾸로 순회
for idx,s in enumerate(str(bin(number))[2:][::-1]):
if s == '1': # 1이면
one_position.append(idx) # 위치 저장
print(*one_position) # 1 위치 한 줄로 출력
3. 최소, 최대
import sys
input = sys.stdin.readline
n = int(input())
number_list = []
number_list = list(map(int, input().split()))
print(min(number_list), max(number_list))
4. 지능형 기차2
import sys
input = sys.stdin.readline
max_val = 0
current = 0 # 현재 사람 수
for idx in range(10):
out_train, in_train = map(int,input().split()) # 내리는 사람, 타는 사람
current = current-out_train+in_train # 현재 사람 계산
max_val = max(current,max_val) # 기차에 사람이 가장 많을 때의 수 갱신
print(max_val)
5. 피보나치 수5
def fib(num):
if num < 2:
return num
else:
return fib(num-1)+fib(num-2) # 피보나치 재귀
num=int(input())
print(fib(num))
6. 일곱 난쟁이
import sys
input = sys.stdin.readline
height = []
for _ in range(9):
height.append(int(input()))
diff = sum(height)-100 # 9명의 난쟁이 키의 합과 100의 차이를 구한다
find_two_false = False # find_two_false라는 초기변수를 False로 설정한다.
for i in height:
for j in height[1:]:
if i + j == diff: # height를 돌면서 두 난쟁이의 합이 diff와 같으면
height.remove(i) # 그 난쟁이들은 가짜 난쟁이이므로 제거
height.remove(j)
find_two_false = True # 두 가짜 난쟁이를 찾았으니 find_two_false라는 초기변수를 True로 설정한다.
break
if find_two_false == True: # 두 가짜 난쟁이를 찾았으면
height.sort() # 정렬하고
print(*height,sep="\n") # 한 줄에 하나씩 출력, *를 사용할 때는 sep 사용
break
7. 최대공약수와 최소공배수
def lcm(a,b): # 최소공배수
x = gcd(a,b)
y = a // x
z = b // x
return x * y * z
def gcd(a,b): # 최대공약수
if b == 0 :
return a
else:
return gcd(b,a % b)
a,b = map(int,input().split())
if a < b :
a, b = b, a # 큰 숫자를 a로 설정
print(gcd(a,b))
print(lcm(a,b))
8. N번째 큰 수
import sys
input = sys.stdin.readline
testcase = int(input())
for t in range(testcase):
numbers = sorted(list(map(int,input().split())),reverse=True) # 내림차순 numbers리스트
print(numbers[2]) # 3번째로 큰 수 출력
9. 소수 찾기
import sys
import math
input = sys.stdin.readline
def sosu(n): # 소수 찾기
for x in range(2,round(math.sqrt(n))+1):
if n % x == 0: # 나눠지는 수가 있다면,
return False # 소수가 아니다
return True # 다 돌 때까지 if문으로 안빠졌으면 소수
N = int(input())
numbers = sorted(list(map(int,input().split())))
cnt = 0 # 소수 개수
for n in numbers:
if n == 2 or n == 3:
cnt += 1
elif n != 1 :
if sosu(n): # 소수로 판별났다면,
cnt += 1
print(cnt)
10. 쉽게 푸는 문제
import sys
input = sys.stdin.readline
A,B = map(int,input().split())
numbers_list = []
for i in range(1,B+1):
for _ in range(i): # i번 반복
numbers_list.append(i) # 숫자 i 추가
sum = 0
for j in numbers_list[A-1:B]: # A부터 B까지이므로 인덱스값으로는 A-1부터 B까지
sum += j
print(sum)
* 조금 더 효율적인 코드 *
number_list = []
for i in range(1, 46):
number_list += [i] * i
A, B = map(int, input().split())
print(sum(number_list[A-1:B]))
# 왜 45까지?
# --> 1부터 45까지 다 더하면 1035입니다.
# --> 예를 들어 최대값이 9 이라면
# --> 1+2+3+4=10 이므로 4까지만 하면 충분합니다
11. 소수
import sys
import math
input = sys.stdin.readline
M = int(input())
N = int(input())
sum, min_val = 0, 10001 # 소수의 합, 소수 중에 최솟값
for i in range(M,N+1):
discover = True # 소수 발견 초기값
if i == 2:
min_val = 2
sum += 2
else:
if i > 2:
for x in range(2,round(math.sqrt(i))+1):
if i % x == 0: # 나눠지면 소수가 아니다
discover = False # 소수발견 False로 갱신
break
if discover: # for문을 다 돌고도 discover가 여전히 True라면 소수
sum += i # sum에 i 추가
min_val = min(i,min_val) # 사실 처음 발견된 i가 최솟값
if min_val == 10001: # min_val이 변하지 않았다면 소수발견 안된 것
print(-1)
else:
print(sum)
print(min_val)
반응형
'컴퓨터 공부 > 👨💻 모각코' 카테고리의 다른 글
모각코 6회차 - 웹 스크래핑을 통한 정보 추출 (0) | 2022.11.30 |
---|---|
모각코 5회차 - DBMS 성능 개선 알고리즘 소개 (0) | 2022.11.30 |
모각코 4회차 - SQLD 자격증 공부 (0) | 2022.11.14 |
모각코 3회차 - 각자 문제풀이 (2) | 2022.11.11 |
모각코 2회차 - 약점체크 (0) | 2022.11.10 |