코딩/Python (75) 썸네일형 리스트형 [Python] 백준 10872 팩토리얼 코드 작성 n = int(input()) k =1 if n == 0: print(1) else: for i in range(1,n+1): k = k*i print(k) 코드 풀이 #1 n 이 0인 경우 모든 수를 곱하면 0이 되기 때문에 먼저 if조건으로 빼주었다. 그리고 for문의 경우 i는 0부터 시작하기 때문에 range의 범위를 1부터 n+1로 설정하였다. [Python] 백준 1789 수들의 합 코드 작성 import math s = int(input()) m = int(math.sqrt(2*s)) while m*m+m > 2*s: m -= 1 print(m) 코드 풀이 #1 서로 다른 n개의 자연수의 합을 구하기 위한 공식은 n(n+1)/2 = s 이다. 따라서 n(n+1) = 2s라고 하고 s가 주어졌을 때 n을 구하는 방법이다. 문제에서 요구하는 것은 n의 최대값이므로, while문 작성시 m*m+m > 2s로 작성하여 m이 2s보다 작아질 때까지 m을 1씩 감소시키며 m의 값을 찾는다. 제곱근(sqrt)함수를 쓰기 위해서 math모듈을 불러오고, 초기 m의 값을 실제 m의 값과 가장 근접한 값을 구하기 위해 sqrt(2s)로 작성하였다. [Python] 백준 10866 덱 코드 작성 from collections import deque #collection모듈의 deque을 사용한다. import sys d = deque() n = int(input()) for i in range(n): cmd = sys.stdin.readline().split() #명령어(cmd)를 [0]에는 입력어, [1]에는 추가될 자료를 입력 if cmd[0] == "push_front": d.appendleft(cmd[1]) #cmd[1]의 값을 d의 처음에 입력 elif cmd[0] == "push_back": d.append(cmd[1]) elif cmd[0] == "pop_front": if d: #d에 자료가 있을경우(len(d)==0)으로도 표현 print(d[0]) d.popleft(.. [Python] 백준 1110 더하기 사이클 코드 작성 n = int(input()) num = n #26 cnt = 0 while True: #True에서 T를 꼭 대문자로 작성! a = num // 10 # 2 b = num % 10 # 6 c = (a+b) % 10 # 8 num = b*10+c # 68 cnt += 1 if num == n: break print(cnt) 코드 풀이 #1 기호 연산자를 잘 알아야 한다. (1) //는 나눗셈에서 몫을 구하는 연산자 이다. (2) %는 나눗셈에서 나머지를 구하는 연산자이다. #2 while문을 꼭 True 에서 T를 대문자로 작성해야 하낟. #3 while은 무한반복 하지만 그 조건이 입력값(n)과 새로운 값(num)이 같아질 때 빠져나오도록(break) 작성한다 [Python] 백준 10951 A+B -4 코드 작성 while True: try: a,b = map(int,input(). split()) except: break print(a+b) 코드 풀이 #1 일반적으로 while문의 사용 시 특정 조건이 만족할 때까지 무한대로 돌린다. 그러나, 이번 문제의 경우 특정 제한이 없다. ① a,b를 정수(int)로 통일(map)되게 띄어쓰기(split)로 구분하여 입력하는데 ② 이 입력 조건과 맞지 않는 경우 while문을 빠져(break)나간다. ③ 그렇지 않고 입력이 재대로 되었으면 print로 출력한다. [Python] 백준 10952 A+B -5 코드 작성 while True: # True에서 T는 반드시 대문자로 표기 a,b = map(int, input().split()) if a==0 and b==0: break else: print(a+b) 코드 풀이 #1 while문 작성시 순서가 정말 중요하다. a,b의 값을 정수(int)로 통일되게(map) 띄어쓰기로 구분(split)하여 작성하는데 a,b의 값이 각각 0이면 while문을 종료(break)한다. 그렇지 않으면(else), a와 b의 합을 출력(print)한다. #2 while문 작성시 유의사항은 True는 대문자로 작성해야 한다. [Python] 백준 2439 코드 작성 1 n = int(input()) for i in range(1,n+1): print((n-i)*" ", i*"*", sep='') 코드 작성 2 n= int(input()) for i in range(1,n+1): print(" "*(n-i) + "*"*i) 코드 풀이1 #1 총 5개의 칸 중에 첫줄에는 띄어쓰기 4칸, 별(*)1칸, 두번째 줄에는 띄어쓰기 3칸, 별(*)2칸이 주어진다. #2 for 문을 사용할 경우 for i in range(n)으로 하면 0부터 n까지의 범위가 된다. 따라서 for i in range(1, n+1)로 작성해야 i 가 1부터 n까지 구현된다. #3 sep=''의 경우 sep : seperate의 약자이다. 즉 print문에서 콤마(,)로 각 변수를 구분하는.. [Python] 백준 10824 네 수 코드 작성 a,b,c,d = map(int, input().split()) k = '' j = '' for i in str(a): k += i for i in str(b): k += i for i in str(c): j += i for i in str(d): j += i print(int(k)+int(j)) 코드 풀이 #1 각각의 수를 문자열로 입력 받아야 한다. a와 b의 각각의 수를 k라는 문자열에 넣고, c와 d의 각각의 수를 j라는 문자열에 넣는다. 그리고 k, j의 문자를 숫자로 변환해서 더한 후 출력한다. 이전 1 ··· 6 7 8 9 10 다음