오늘은 시험 전 마지막 문제풀이 시간이었다.
시험이 끝나고는 주마다 알고리즘을 공부할 계획이기 때문에
간단하게 디버깅과 시간복잡도에 대한 개념을 이야기해 보았다.

<솔민 1173번 운동>
from sys import stdin
N,m,M,T,R = map(int,stdin.readline().split())
time = 0
runtime = 0
heart = m
while (runtime != N):
if (m+T>M):
time = -1
break
if (heart+T <= M):
time += 1
runtime += 1
heart += T
else:
time += 1
heart-=R
if (heart < m):
heart = m
print(time)
시간 초과가 나서 시간복잡도 문제인 줄 알았는데 값이 나올 수 없을 때 -1이 나와야 한다는 조건 빼먹은 걸 모르고 있었다..
시간 초과 말고 틀렸습니다로 나오면 더 좋았을 텐데..
<정민 - 20113번 긴급 회의>
임포스터는 누구인가?
from sys import stdin
N = int(stdin.readline())
list = list(map(int,stdin.readline().split()))
Nlist = [0 for _ in range(N+1)]
for cha in list:
Nlist[cha] += 1
del Nlist[0]
re = max(Nlist)
count = 0
for cha in Nlist:
if cha == re:
count += 1
if count == 1:
print(Nlist.index(re)+1)
else:
print("skipped")
<은채 - 15894번 수학은 체육과목이다>
from sys import stdin
N = int(stdin.readline())
print(N*4)
이런 문제 좋다~
<정화 - 2783번 삼각김밥>
from sys import stdin
X, Y = map(int,stdin.readline().split())
a = X/Y
N = int(stdin.readline())
reList = [a]
for _ in range(N):
a, b = map(int,stdin.readline().split())
reList.append(a/b)
result = min(reList)
print(1000*result)
<소은 - 1453번 피씨방 알바>
from sys import stdin
N = int(stdin.readline())
Nlist = list(map(int,stdin.readline().split()))
reList = [0 for _ in range(N+1)]
result = 0
for cha in Nlist:
if reList[cha] == 0:
reList[cha] = 1
else:
result += 1
print(result)
시간 초과 나서 왜지..했는데
from sys import stdin
N = int(stdin.readline())
Nlist = list(map(int,stdin.readline().split()))
Nlist = set(Nlist)
print(N-len(Nlist))
아니 이런 간단한 방법이
sort 활용은 맨날 까먹는다
set은 sort외 달리 재할당 필요
N = set(N)
N.sort()
<수연 2609번 최대공약수와 최소공배수>
[Python] 최소공배수, 최대공약수란? 파이썬 알고리즘으로 쉽게 구현하기 / for문, 유클리드 호제법
최대공약수란 ? GCD (Greatest Common Divisor) Common Divisor -> 라는 이름에서 알 수 있듯이 두 수 혹은 그 이상의 여러 수의 공통인 약수 중, 최대인 것. 즉, 수들의 각각의 약수 중 공통이며 가장 큰 수를..
codingpractices.tistory.com
from sys import stdin
N,M= map(int,stdin.readline().split())
#최대공약수/큰것부터보기/둘 다 나뉘어지는거/가장 큰 거는 두 수 중 하나/1까지는 무조건 하나 있음
for i in range(min(N,M),0,-1): #1까지
if N%i == 0 and M%i==0:
print(i)
break
#최소공배수/작은것부터보기/둘 다 나뉘어지는거/둘 중 하나가 가장 작은 것 후보/둘이 곱한 것까지는 무조건 하나 있음
for i in range(max(N,M),(N*M)+1):
if i%N == 0 and i%M==0:
print(i)
break
시간 초과????
백준 - 2609 (Python) - 최대공약수와 최소공배수
백준 2869 최대공약수와 최소공배수 앞서 포스팅했던 []**
velog.io
유클리드 호제법..?
import math
a, b = map(int, input().split())
print(math.gcd(a, b))
print(math.lcm(a, b))
파이썬 모듈 짱!
<은솜 - 1817번 짐 챙기는 숌>
은솜이 솜이라서 숌 가져온 거 귀엽다
from sys import stdin
N, M = map(int,stdin.readline().split())
Nlist = list(map(int,stdin.readline().split()))
if N == 0:
print(0)
else:
result = 0
box = 0
for cha in Nlist:
box += cha
if (M < box):
result += 1
box = cha
print(result+1)
<다예 - 1874 스택 수열>
ㅜ...오늘은 거의 힐링 문제였지만 이건 어려워.. 구글링하기
[백준] 1874번 스택 수열 (Python 파이썬)
www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6,..
hongcoding.tistory.com
from sys import stdin
N = int(stdin.readline())
stack = []
cha = 1
for i in range(1,N+1): # 1부터 N까지
num = int(stdin.readline())
while(cha<=num):#수 나올떄까지 스택 쌓기
print("+")
stack.append(cha)
cha += 1
if stack[-1] == num:# 같을 때
stack.pop()
print("-")
else:
print("NO")
break
틀림
from sys import stdin
N = int(stdin.readline())
stack = []
answer = []
cha = 1
k = True
for i in range(1,N+1): # 1부터 N까지
num = int(stdin.readline())
while(cha<=num):#수 나올때까지 스택 쌓기
answer.append("+")
stack.append(cha)
cha += 1
if stack[-1] == num:# 같을 때
stack.pop()
answer.append("-")
else:
k = False
print("NO")
break
if k == True:
for cha in answer:
print(cha)
No일 때 + - 나오다가 NO 나오는구나..ㅎㅎ
괜히 내 생각대로 하다가 망했었군
고수님의 코드는 다 이유가 있는 거였어
모두들 시험공부 화이팅!
시험기간엔 정기모임은 없지만 번개 스터디를 열 계획이다.
그리고 실버 2 진입!

오옝
그리고 한글날을 맞아서.. 글씨도 한글

손 제스처도 EC 말고 ㅇㅆ 로 했다~

'Club|Project > Ec.crew 코딩 스터디' 카테고리의 다른 글
𝗘𝗰.𝗰𝗿𝗲𝘄 3기 OT (0) | 2022.12.29 |
---|---|
🫐Ec.crew 2기 마무리 / 3기 모집🍊 (0) | 2022.12.02 |
𝗘𝗰.𝗰𝗿𝗲𝘄 2기 4회차 문제 풀기 (1) | 2022.09.22 |
Ec.crew 2기 3회차 팀대항전 문제 (1) | 2022.09.15 |
Ec.crew 2기 2회차 팀대항전 문제 (0) | 2022.09.09 |