파이썬 31

[python] 백준 17086번: 아기 상어2(BFS)

# 17086 아기 상어2 https://www.acmicpc.net/problem/17086 17086번: 아기 상어 2 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸과 상어의 수가 각각 한 개 이상인 입력만 www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline from collections import deque N, M = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(N)] # 상 우상 우 우하 하 좌하 좌 좌상 dx =..

Algorithm 2023.02.13

[python] 백준 1890번: 점프(DP)

# 1890 점프 https://www.acmicpc.net/problem/1890 1890번: 점프 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장 www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline N = int(input()) board = [list(map(int, input().split())) for _ in range(N)] dp = [[0] * N for _ in range(N)] dp[0][0] = 1 for i in range(N): for j in range(N): if ..

Algorithm 2023.02.10

[python] 백준 1149번: RGB거리(DP)

# 1149 RGB거리 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline N = int(input()) house = [] for _ in range(N): R, G, B = map(int, input().split()) house.append([R, G, B]) for i in range(1, len(house)): house[i][0] = hou..

Algorithm 2023.02.08

[python] 백준 1697번: 숨바꼭질(BFS)

# 1697 숨바꼭 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline from collections import deque N, K = map(int, input().split()) MAX = 100001 visited = [-1] * MAX visited[N] = 0 # 수빈이의 위치 방문처리 queue = deque() queue.appen..

Algorithm 2023.02.04

[python] 백준 3184번: 양(BFS)

# 3184 양 https://www.acmicpc.net/problem/3184 3184번: 양 첫 줄에는 두 정수 R과 C가 주어지며(3 ≤ R, C ≤ 250), 각 수는 마당의 행과 열의 수를 의미한다. 다음 R개의 줄은 C개의 글자를 가진다. 이들은 마당의 구조(울타리, 양, 늑대의 위치)를 의미한다. www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline from collections import deque R, C = map(int, input().split()) graph = [list(map(str, input().strip())) for _ in range(R)] visited = [[0] * C for _ in range(R)] dx,..

Algorithm 2023.01.30

[DRF] 게시판에 Authentication과 Permission 적용하기

게시판을 작성하는데 있어서 유저가 로그인이 되어있는지 아닌지를 구별해줄 필요성이 있다. 익명 게시판이 아닌경우에는 글을 작성하는 사용자가 로그인 상태인지를 확인해야 하는데 이때 사용하는 개념이 authentication과 permission이다. ✅ Authentication 먼저 authentication에 대해 먼저 알아보면 authentication은 인증이라는 뜻으로 특정 서비스를 사용하는 데 있어 사용자의 신원(회원/비회원/관리자 등)을 확인하는 절차를 의미한다. 즉, user의 id와 password를 확인하는 것이라고 생각할 수 있다. Django의 REST Framework authentication의 종류로는 크게 5가지가 있다. 1. BasicAuthentication HTTP 제어 h..

Python/DRF 2023.01.29

[python] 백준 2468번: 안전 영역(BFS)

# 2468 안전 영역 https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline from collections import deque N = int(input()) graph = [list(map(int, input().split())) for _ in range(N)] high = 0 for i in range(N): for j in range(N): if graph[i][j] > ..

Algorithm 2023.01.28

[python] 백준 2178번: 미로 탐색(BFS)

# 2178 미로 탐색 https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline from collections import deque N, M = map(int, input().split()) graph = [list(map(int, input().strip())) for _ in range(N)] visited = [[-1] * M for _ in range(N)] dx, dy = [0,0,-1,1], [-..

Algorithm 2023.01.27

[python] 백준 14226번: 이모티콘(BFS)

# 14426 이모티콘 https://www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline from collections import deque S = int(input()) visited = [[-1] * (S + 1) for _ in range(S + 1)] queue = deque() queue.append((1,0)) visited[1][0] = 0 while queue: scree..

Algorithm 2023.01.26

[python] 클린코드와 코드 리팩토링

✅ 클린 코드란? 클린 코드에 대해 유일하고 엄격한 정의는 존재하지 않는다. 하나의 통용되는 말이 있다면 바로 가독성이 높은 코드가 될 것이다. 즉, 클린 코드는 다른 개발자가 코드를 읽고 유지 관리를 할 수 있는지 여부에 달려 있다고 볼 수 있다. 클린코드로 코드를 작성하려면 다음과 같이 구현해야 한다. 네이밍이 잘 되어야 함(무슨 역할인지 명시) 변수, 함수, 클래스, 파일 이름 모두 해당 이름은 항상 "무엇을 하는지" 명확하게 드러내야 한다. 이름은 역할과 본질을 나타내 준다. 코딩할 때 가장 어려운 파트 오류가 없어야 함 중복이 없어야 함 중복 코드가 있다면 수정할 때 2번 이상 수정해야 함. 3번 이상 중복 코드가 등장하면, 어떻게든 한 곳으로 모아줘야 한다. 의존성을 최대한 줄여야 함 클래스 ..

Computer Science 2023.01.25
728x90