# if문의 기본구조
if 조건문:
수행할 문장
else:
수행할 문장
# Pseudocode(슈도코드; 의사코드)
# 특정 프로그래밍 언어의 문법이 아니라 사람의 언어로 코드를 흉내 내 알고리즘 표현
# 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어
if 밖에 나갈때:
if 날씨가 춥다면:
롱 패딩을 입고 나간다.
if 날씨가 덥다면:
반팔을 입고나간다.
else:
아무일도 하지 않음
# 위 의사코드를 코드로 작성
out = True
temp = "춥다"
if out:
if temp == "춥다":
print("롱 패딩을 입고 나간다.")
if temp == "덥다":
print("반팔을 입고나간다.")
else:
pass
# + 조건문이 참일때 그냥 아무일도 하지않고 넘어감
if out:
pass
else:
print(" ")
hour = 8
if hour == 8:
print("기상")
elif hour == 12:
print("점심")
elif hour == 18:
print("저녁")
while 조건문:
수행할 문장
# 예시
open = 0
while open < 10:
open += 1
print(f"{open}번 상자를 열었습니다.")
if open == 10:
print("모든 상자를 열었습니다.")
# break를 이용한 탈출
box = 10
while True:
print("상자를 구매합니다")
box -= 1
if not box:
print("상자가 0개라 더 이상 구매할 수 없습니다.")
break
# continue를 이용한 홀수만 출력
num = 0
while num < 10:
num += 1
if num % 2 == 0:
continue
print(num)
def solution(answers):
pattern_1 = [1, 2, 3, 4, 5]
pattern_2 = [2, 1, 2, 3, 2, 4, 2, 5]
pattern_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
score = [0, 0, 0]
result = []
for idx, answer in enumerate(answers):
if answer == pattern_1[idx%len(pattern_1)]:
score[0] += 1
if answer == pattern_2[idx%len(pattern_2)]:
score[1] += 1
if answer == pattern_3[idx%len(pattern_3)]:
score[2] += 1
for idx, s in enumerate(score):
if s == max(score):
result.append(idx+1)
return result
def solution(answers):
p = [[1, 2, 3, 4, 5],
[2, 1, 2, 3, 2, 4, 2, 5],
[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]
s = [0] * len(p)
for q, a in enumerate(answers):
for i, v in enumerate(p):
if a == v[q % len(v)]:
s[i] += 1
return [i + 1 for i, v in enumerate(s) if v == max(s)]
from itertools import cycle
def solution(answers):
giveups = [
cycle([1,2,3,4,5]),
cycle([2,1,2,3,2,4,2,5]),
cycle([3,3,1,1,2,2,4,4,5,5]),
]
scores = [0, 0, 0]
for num in answers:
for i in range(3):
if next(giveups[i]) == num:
scores[i] += 1
highest = max(scores)
return [i + 1 for i, v in enumerate(scores) if v == highest]
def answer_type(pattern, length):
return pattern * (length // len(pattern)) + pattern[:length%len(pattern)]
def check_answer(p, a):
return [(x==y) for x,y in zip(p,a)].count(True)
def solution(answers):
p1 = [1,2,3,4,5]
p2 = [2,1,2,3,2,4,2,5]
p3 = [3,3,1,1,2,2,4,4,5,5]
ps = [p1,p2,p3]
anws = [answer_type(p, len(answers)) for p in ps]
chks = [check_answer(a, answers) for a in anws]
return [i+1 for i in range(len(ps)) if chks[i] == max(chks)]
a = [1, 2, 3, 4, 5]
b = [2, 1, 2, 3, 2, 4, 2, 5]
c = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
def solution(answers):
answer = []
aa = [1 for i, val in enumerate(answers) if a[i % 5] == val]
bb = [1 for i, val in enumerate(answers) if b[i % 8] == val]
cc = [1 for i, val in enumerate(answers) if c[i % 10] == val]
x = max([len(aa),len(bb),len(cc)])
if x == len(aa) :
answer.append(1)
if x == len(bb) :
answer.append(2)
if x == len(cc) :
answer.append(3)
sorted(answer)
return answer
from itertools import cycle
import numpy as np
def solution(answers):
p1 = [1,2,3,4,5]
p2 = [2,1,2,3,2,4,2,5]
p3 = [3,3,1,1,2,2,4,4,5,5]
seq = zip(cycle(p1), cycle(p2), cycle(p3))
res = np.zeros(3)
for sol in answers:
tmp = np.array(next(seq))
res[tmp==sol] += 1
cnt = np.count_nonzero(res[res==res.max()])
if not cnt:
return []
res = res.argsort()+1
return list(res[3-cnt:])
코드를 구성하는 것에는 왕도가 없지만 원하는 기능과 향후 확장성 등을 생각해 문제를 풀어 나가는 것이 중요하다!