전체 글

전체 글

    [백준] 9663. N-Queen

    📌문제 https://www.acmicpc.net/problem/9663 🎖️난이도 ✔️풀이 # sol1) 재귀 # python3 오답 (시간 초과) & pypy3 정답 (30044ms) n = int(input()) queen = [0 for _ in range(n)] # 각 행마다의 퀸의 위치(열) cnt = 0 # 해당 행에 퀸을 놓을 수 있는 곳이 있는지(유망한지) 현재 queen 배열 상태 체크 def isPromising(row): # 체크하려는 행의 이전 행까지만 체크 for i in range(row): # 퀸을 놓을 수 없는 경우 2가지 (유망 x) # 1. 같은 열에 위치한 퀸이 있거나 or 2. 왼쪽 위 or 오른쪽 위 대각선에 퀸이 있거나 if queen[row] == queen[i..

    [백준] 15651. N과 M (3)

    📌문제 https://www.acmicpc.net/problem/15651 🎖️난이도 ✔️풀이 from itertools import product # 중복 순열 n, m = map(int, input().split()) for i in product(range(1, n+1), repeat = m): # product는 꼭 repeat!! print(' '.join(map(str, i)))

    [백준] 15650. N과 M (2)

    📌문제 https://www.acmicpc.net/problem/15650 🎖️난이도 ✔️풀이 n, m = map(int, input().split()) result = [] def dfs(k): if len(result) == m: print(' '.join(map(str, result))) for i in range(k, n+1): if i not in result: result.append(i) dfs(i+1) # 다음 값부터 dfs 돌도록 넣기! result.pop() dfs(1)

    [백준] 15649. N과 M (1)

    📌문제 https://www.acmicpc.net/problem/15649 🎖️난이도 ✔️풀이 # sol1) back tracking (recursion) N, M = map(int, input().split()) result = list() def func(): if len(result) == M: print(' '.join(map(str, result))) return for i in range(1, N+1): if i not in result: result.append(i) func() result.pop() func() # sol2) itertools - permutations (순열) from itertools import permutations n, m = map(int, input().spl..

    [백준] 2178. 미로 탐색

    📌문제 https://www.acmicpc.net/problem/2178 🎖️난이도 ✔️풀이 # 정답 - bfs (visited, queue) from collections import deque n, m = map(int, input().split()) miro = [list(map(int, list(input()))) for _ in range(n)] visited = [[0]*m for _ in range(n)] # ~까지의 이동 횟수(방문한 칸 수) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] # bfs q = deque() q.append([0, 0]) # 시작 위치 visited[0][0] = 1 # 시작 위치까지의 방문 칸 수 1칸 # 큐가 빌 때까지 반복 while ..

    [백준] 1260. DFS와 BFS

    📌문제 https://www.acmicpc.net/problem/1260 🎖️난이도 ✔️풀이 # sol1) 인접 행렬 & 재귀(dfs) & 큐(bfs) from collections import deque import sys sys.setrecursionlimit(1000000) # 파이썬 기본 재귀 깊이 제한 늘리기 (런타임 에러 방지) n, m, v = map(int, input().split()) # 정점 개수, 간선 개수, 탐색 시작 노드 graph = [[0] * (n+1) for _ in range(n+1)] # 인접 행렬로 그래프 저장 (0으로 초기화) visited_dfs = [False] * (n+1) # list에서 append 후 in으로 체크하는 것보다 빠름 visited_bfs =..

    [백준] 1541. 잃어버린 괄호

    📌문제 https://www.acmicpc.net/problem/1541 🎖️난이도 ✔️풀이 sik = input() arr = sik.split('-') result = 0 for n in arr.pop(0).split('+'): # 맨 첫번째만 더하고, 이후부턴 다 빼기위해 pop result += int(n) for n in arr: for nn in n.split('+'): result -= int(nn) print(result)

    [백준] 11399. ATM

    📌문제 https://www.acmicpc.net/problem/11399 🎖️난이도 ✔️풀이 n = int(input()) p = list(map(int, input().split())) result = 0 p.sort() for i in range(len(p)): for j in range(i+1): result += p[j] print(result)

    [백준] 2443. 별 찍기 - 6

    📌문제 https://www.acmicpc.net/problem/2443 🎖️난이도 ✔️풀이 n = int(input()) for i in range(n): s = '*' * ((n-i)*2-1) print(s.rjust(2*n-1-i)) # 오른쪽 정렬, 전체 길이 지정 n = int(input()) for i in range(n): print(' '*i + '*'*(2*n-1-i*2))

    [백준] 2442. 별 찍기 - 5

    📌문제 https://www.acmicpc.net/problem/2442 🎖️난이도 ✔️풀이 n = int(input()) for i in range(1, n+1): print(' ' * (n-i) +'*'*((2*i)-1)) # * 뒤에는 공백 X!