문제 (링크) https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 나의 풀이 import sys input = sys.stdin.readline n, m, x, y, k = map(int, input().split()) graph = [] # 동: 1 서: 2 북: 3 남: 4 moves = [ [], [0, 1], [0, -1], [-1, 0], [1, 0] ] # 아래부터 0, ..
분류 전체보기
문제 (링크) https://www.acmicpc.net/problem/18808 18808번: 스티커 붙이기 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연 www.acmicpc.net 나의 풀이 import sys input = sys.stdin.readline # 스티커 90도 회전 def rotate_by_90(sticker_board): r, c = len(sticker_board), len(sticker_board[0]) rotated_sticker_board = [[0] * r for _ in range(c)] for i in range(c): for j ..
DRF를 통해 프로젝트 진행 중 JWT를 발급해야 할 상황이 생겼다. 토이 프로젝트이고 돈도 없다보니 데이터베이스를 AWS MySQL 프리티어로 사용하고 있는데, 아무래도 이게 성능도 안좋고 느리다보니 세션을 통해 인증과 인가를 하게 되면 매번 데이터베이스를 때리기 때문에 좋지 않다고 판단했다. DRF JWT 키워드로 서치를 많이 해봤는데, 대부분은 djangorestframework-jwt나 django-rest-authtoken 라이브러리를 사용하는 것 같았다. 처음엔 나 역시 이것들을 사용하려고 했는데, 2가지 이유로 그만뒀다. 첫 번째는, 토큰의 만료시간을 제외하곤 커스터마이징하기가 쉽지 않아보였다. 우선, 위 라이브러리들은 기본적으로 username과 password를 입력 받아 토큰을 생성해준..
문제 (링크) https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 나의 풀이 # 오답 import sys input = sys.stdin.readline words = [] word_dict = {} n = int(input()) for _ in range(n): words.append(list(str(input().rstrip()))) words = sorted(words, key=lambda x:len(x), reverse=True) lo..
시간 제한 1초 문제 (링크) https://www.acmicpc.net/problem/2170 2170번: 선 긋기 첫째 줄에 선을 그은 횟수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y(-1,000,000,000 ≤ x < y ≤ 1,000,000,000)가 주어진다. www.acmicpc.net 나의 풀이 import sys input = sys.stdin.readline n = int(input()) lines = [] for _ in range(n): lines.append(tuple(map(int, input().split()))) lines.sort() left = lines[0][0] right = lines[0][1] ..
문제 (링크) https://www.acmicpc.net/problem/1520 1520번: 내리막 길 첫째 줄에는 지도의 세로의 크기 M과 가로의 크기 N이 빈칸을 사이에 두고 주어진다. 이어 다음 M개 줄에 걸쳐 한 줄에 N개씩 위에서부터 차례로 각 지점의 높이가 빈 칸을 사이에 두고 주어진다. www.acmicpc.net 나의 풀이 import sys input = sys.stdin.readline sys.setrecursionlimit(10**6) n, m = map(int, input().split()) graph = [] moves = [ [1, 0], [0, 1], [-1, 0], [0, -1] ] visited = [[-1] * m for _ in range(n)] for _ in rang..
시간 제한 0.5 초 (추가 시간 없음) 문제 (링크) https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 나의 풀이 n, k = map(int, input().split()) coins = [] for _ in range(n): coins.append(int(input())) dp = [0] * (k+1) dp[0] = 1 # dp[i] -> i원을 만들 때 가능한 경우의 수 # dp[0] -> 동전 하나를 사용하는 경우 (coin이 3일 때, d..
문제 (링크) https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 나의 풀이 import sys from collections import deque input = sys.stdin.readline n, m = map(int, input().split()) graph = [] for _ in range(n): row = list(str(input().rstrip())) graph.append(list(map(int, row..