백준

    [백준 파이썬] # 9184 신나는 함수 실행

    Silver II # 9184 신나는 함수 실행 링크 : https://www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net 풀이 d = [[[0]*21 for i in range(21)] for j in range(21)] def w(a,b,c): if a20: return w(20,20,20) # 배열에 값이 저장되어 있으면 계산하지 않고 출력 if d[a][b][c]: return d[a][b][c] if a

    [백준 파이썬] # 1874 스택 수열

    Silver III # 1874 스택 수열 링크 : https://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, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 풀이 N = int(input()) stack = [] # 숫자를 담을 리스트 result = [] # '+' or '-'을 담을 리스트 cnt = 1 # 입력값의 경우의 수를 제한하기 위해 사용하는 기준 temp = True # 오류 판별에 사용 for i in ..

    [백준 파이썬] # 10814 나이순 정렬

    Silver V # 10814 나이순 정렬 링크 : https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 풀이 N = int(input()) li = [] for i in range(N): a, b = input().split() li.append([a, b]) li = sorted(li, key = lambda a: int(a[0])) # point! for i in li: print(i[0], i[1]) 후기 lambda를 이용해 정의할 때 숫자 기준..

    [백준 파이썬] # 10845 큐

    Silver IV # 10845 큐 링크 : https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 풀이 import sys from collections import deque N = int(sys.stdin.readline()) queue = deque() for i in range(N): a = sys.stdin.readline().split() if a[0] == "push": queue.append(a[1]) elif a[0]..

    [백준 파이썬] # 15649 N과 M (2)

    Silver III # 15649 N과 M (2) 링크 : https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 N, M = map(int, input().split()) def dfs(start, seq): if len(seq) == M: print(' '.join(list(map(str, seq)))) return for i in range(start, N+1): if i not in seq: seq.append(i) dfs(i+1, se..

    [백준 파이썬] # 15651 N과 M (4)

    Silver III # 15651 N과 M (4) 링크 : https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 N, M = map(int, input().split()) def dfs(start, seq): if len(seq) == M: print(' '.join(list(map(str, seq)))) return for i in range(start, N+1): seq.append(i) dfs(i, seq) seq.pop() dfs(1,..

    [백준 파이썬] # 15651 N과 M (3)

    Silver III # 15651 N과 M (3) 링크 : https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 N, M = map(int, input().split()) def dfs(depth, seq): if depth == M: print(' '.join(list(map(str, seq)))) return for i in range(1, N+1): seq.append(i) dfs(depth+1, seq) seq.pop() dfs(0, ..

    [백준 파이썬] # 15649 N과 M (1)

    Silver III # 15649 N과 M (1) 링크 : https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 N, M = map(int, input().split()) def dfs(depth, seq): if depth == M: print(' '.join(list(map(str, seq)))) for i in range(1, N+1): if i not in seq: temp = seq.copy() temp.append(i) dfs(de..

    [백준 파이썬] # 10809 알파벳 찾기

    Bronze II # 10809 알파벳 찾기 링크 : https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 풀이 S = list(input()) alphabet = list('abcdefghijklmnopqrstuvwxyz') li = [] for i in alphabet: if i in S: li.append(S.index(i)) else: li.append(-1) print(*li) 풀이 방법 alphabet을 정의한다 S에서 alp..

    [백준 파이썬] # 2675 문자열 반복

    Bronze II # 2675 문자열 반복 링크 : https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 풀이 T = int(input()) for i in range(T): R, S = input().split() P = '' for j in S: P += j*int(R) print(P) 풀이 방법 문자열 P를 이용한다. P에 문자를 추가하기 위해서 '+='를 이용한다. 후기 문자열로 받아 사용하면, 리스트에 append 후 프린트 하는 ..