목록전체 글 (317)
지나가던 개발자
while True: a = int(input()) if a == 0: break print(int(a*(a+1)/2)) 참 오랜만에 푼 문제이다... 정말 쉬운 문제이다. 피라미드를 쌓는데에 윗칸부터 {1, 2, 3, 4, ..., n-2, n-1, n} 개의 블록이 쓰일 것이므로 공차가 1인 등차수열의 합 공식을 사용하여 문제를 풀어 주면 된다.
from collections import Counter;print(Counter(sorted([input() for i in range(int(input()))])).most_common()[0][0])
n, m = map(int, input().split()) book = [] for i in range(n): book.append(input()) for i in range(len(book)): if book[i][0] == "
alljobs = set([input() for i in range(int(input()))]) alreadydid = set([input() for i in range(int(input()))]) print(len(alljobs-alreadydid)) [print(x) for x in list(alljobs-alreadydid)]
n, m = map(int,input().split()) l = [[int(x[0]), int(x[1]), x[2]] for x in [input().split() for i in range(m)]] for i in range(max([x[1] for x in l])+1): toPrint = sorted([x for x in l if x[1]==i], key=lambda x:x[0]) if toPrint!=[]: for j in toPrint: print(j[-1],end="")
a,b,c = int(input()), int(input()), int(input()) if a==b==c: print("Equilateral") elif a==b or b==c or c==a: print("Isosceles") else: if a+b+c==180: print("Scalene") else: print("Error")
tensyu = [0, 0, 0] santen = [0, 0, 0] niten = [0, 0, 0] for i in range(int(input())): a = list(map(int, input().split())) tensyu[0] += a[0] tensyu[1] += a[1] tensyu[2] += a[2] if a[0] == 3: santen[0] += 1 elif a[1] == 3: santen[1] += 1 else: santen[2] += 1 if a[0] == 2: niten[0] += 1 elif a[1] == 2: niten[1] += 1 else: niten[2] += 1 #print(tensyu, santen, niten) if len(set(tensyu)) == len(tensyu..
위와 같은 삼각형 ABC의 A에서 선분 BC에 내린 중점 M과 A에서 선분 BC에 내린 수선의 발 H에 관해서 다음과 같은 식이 성립한다. $$ \overline{AB}^2 + \overline{AC}^2 = $$ $$ (\overline{BH}^2+\overline{AH}^2)+(\overline{HC}^2+\overline{AH}^2)= $$ $$ \overline{BH}^2+\overline{HC}^2+2\overline{AH}^2= $$ $$ (\overline{BM}+\overline{MH})^2+(\overline{CM}-\overline{MH})^2+2\overline{AH}^2= $$ $$ (\overline{BM}+\overline{MH})^2+(\overline{BM}-\overline..
n, k = map(int, input().split()) coins = [int(input()) for x in range(n)] ans = 0 for i in list(reversed(coins)): if k < i: continue coin = 1 while True: if k-(i*coin) < i: k -= i*coin break coin += 1 ans += coin print(ans) 간단한 그리디 알고리즘(탐욕법) 문제이다.
n = 1000-int(input()) ans = 0 for i in [500, 100, 50, 10, 5, 1]: ans += n//i n %= i print(ans) 욕심많은 알고리즘을 사용했다.
import sys n, m = map(int, sys.stdin.readline().split()) sites = [] pws = [] for x in range(n): siteAndPw = sys.stdin.readline().split() sites.append(siteAndPw[0]) pws.append(siteAndPw[1]) for i in range(m): print(pws[sites.index(sys.stdin.readline().strip())]) 시간 초과 문제 때문에 PyPy3로 제출해야만 풀린다.
def listHandler(a, b, l): try: if a < 0 or b < 0: return 0 return l[a][b] except: return 0 n, m = map(int, input().split(" ")) village = [] for i in range(n): village.append(list(map(int, input().split(" ")))) if m == 0: print(max(sum(village, []))) else: maximum = sum(sorted(sum(village, []), reverse=True)[0:m*4+1]) largest = 0 a = 0 printed = False for i in village: b = 0 for j in i: cross = 0..
from itertools import combinations def is_similar(s1, s2): similar = [] for i in [s1, s2]: alpha = [] a = "" for j in i: if j not in alpha: alpha.append(j) a += str(alpha.index(j)) similar.append(a) if len(set(similar)) == 1: return True return False ans = 0 for i in combinations([input() for i in range(int(input()))], 2): if is_similar(i[0], i[1]): ans += 1 print(ans) 저번에 64일 스트릭이 깨진 뒤에 우울해서 한동..
ans = 0 for i in range(int(input())): stack = [] s = input() for char in s: try: if stack[-1] == char: stack.pop() continue stack.append(char) except: stack.append(char) if len(stack) == 0: ans += 1 print(ans) 뇌 빼고 코딩했는데 이게 왜 됨? 나도 이 코드가 무슨 의미인지 잘 모르겠다. 내 무의식이 대신 코딩해줬달까.
S = input() stack = [] ans = 0 for char in S: if char == "(": stack.append(char) continue try: stack.pop() except: ans += 1 print(ans+len(stack)) 저번에 푼 9012번 문제와 상당히 유?사랄까 거의 똑같다. 코드를 진짜 조금만 수정했는데 바로 통과가 된다. https://developer-next-to-you.tistory.com/302
def is_palindrome(a): return str(a == a[::-1]).lower() print(is_palindrome(input())) 저번에 푼 10174번 문제랑 제목이 똑같다 ㅋㅋ. https://developer-next-to-you.tistory.com/307 [Python] 백준 10174번(팰린드롬) 문제 풀이 def is_palindrome(a): return a == a[::-1] for i in range(int(input())): if is_palindrome(input().lower()): print("Yes") continue print("No") developer-next-to-you.tistory.com
def is_palindrome(a): return a == a[::-1] for i in range(int(input())): if is_palindrome(input().lower()): print("Yes") continue print("No")
while True: 암호 = input() if 암호 == "END": break print(암호[::-1])
stack = [] for i in range(int(input())): n = int(input()) if n == 0: stack.pop() continue stack.append(n) print(sum(stack))
import sys stack = [] for i in range(int(sys.stdin.readline())): command = sys.stdin.readline() if "push" in command: stack.append(int(command.split()[1])) continue if command == "pop\n": try: print(stack.pop()) except: print(-1) elif command == "size\n": print(len(stack)) elif command == "empty\n": if stack == []: print(1) else: print(0) else: try: print(stack[-1]) except: print(-1)
while True: s = input() if s == ".": break stack = [] d = {")": "(", "]": "["} printed = False for char in s: if char in list(d.values()): stack.append(char) continue if char in d: try: if stack.pop() != d[char]: print("no") printed = True break except: print("no") printed = True break if printed: continue if len(stack) == 0: print("yes") continue print("no") 어제 푼 9012번 문제와 상당히 유사하다. 스택 자료구조를 사용..
for i in range(int(input())): stack = [] S = input() printed = False for char in S: if char == "(": stack.append(char) continue try: stack.pop() except: print("NO") printed = True break if printed: continue if len(stack) != 0: print("NO") continue print("YES") 스택 자료구조를 사용해서 문제를 풀었다. "("이라면 스택에 넣어주고, ")"이라면 마지막으로 추가된 "("을 스택에서 빼주다가 스택에 더 이상 ")"에 매칭되는 "("이 존재하지 않거나 "("이 ")"보다 많은 경우에는 "NO"를, "("과 ..
print([1, 1, 1, 2, 3, 4, 6, 9, 13, 19, 28, 41, 60, 88, 129, 189, 277, 406, 595, 872, 1278, 1873, 2745, 4023, 5896, 8641, 12664, 18560, 27201, 39865, 58425, 85626, 125491, 183916, 269542, 395033, 578949, 848491, 1243524, 1822473, 2670964, 3914488, 5736961, 8407925, 12322413, 18059374, 26467299, 38789712, 56849086, 83316385, 122106097, 178955183, 262271568, 384377665, 563332848, 825604416, 1209982..
n = int(input()) if set(str(n)) == {'4', '7'} or set(str(n)) == {'7', '4'} or set(str(n)) == {'7'} or set(str(n)) == {'4'}: print(n) else: kummin = 0 for i in range(4, n+1): if set(str(i)) == {'4', '7'} or set(str(i)) == {'7', '4'} or set(str(i)) == {'7'} or set(str(i)) == {'4'}: kummin = i print(kummin)
N = int(input()) groups = [] for i in range(N): word = sorted(list(input())) if word not in groups: groups.append(word) print(len(groups))
input() [print(x, end=" ") for x in sorted(list(map(int, input().split()))+list(map(int, input().split())))]
N = int(input()) dots = [] for i in range(N): dots.append(list(reversed(list(map(int, input().split()))))) for i in sorted(dots): print(i[1], i[0])
저번에 백준의 11723번 문제를 이 비트마스킹을 사용해서 풀었었습니다. https://developer-next-to-you.tistory.com/295 [Python] 백준 11723번(집합) 문제 풀이 import sys S = 0 for i in range(int(sys.stdin.readline())): command = sys.stdin.readline().split() if len(command) == 1: if command[0] == "all": S = (1 developer-next-to-you.tistory.com 비트마스킹이란 기본적으로 정말 간단한 개념입니다. 컴퓨터는 이진수로 생각하죠? 이진수는 0과 1로 이루어져 있습니다. 이 0과 1을 각각 False와 True로 생각하여 연..
import sys S = 0 for i in range(int(sys.stdin.readline())): command = sys.stdin.readline().split() if len(command) == 1: if command[0] == "all": S = (1
n = int(input()) print('어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.') for i in range(n): print("_"*(i*4)+'"재귀함수가 뭔가요?"') print("_"*(i*4)+'"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.') print("_"*(i*4)+'마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.') print("_"*(i*4)+'그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."') print("_"*(n*4)+'"재귀함수가 뭔가요?"') print("_"*(n*4)+'"재귀함수는 자기 자신을 호출하는 함수라네"') for i i..