728x90
반응형

Python 56

[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

함수형 프로그래밍의 특징과 장단점

✅ 함수형 프로그래밍이란? 함수형 프로그래밍은 하나의 프로그래밍 패러다임으로 정의되는 코딩 접근 방식이며, 자료처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임을 의미한다. ✅ 함수형 프로그래밍의 특징 🔎 1. 순수함수 (Pure function) 동일한 입력에는 항상 같은 값을 반환해야 하는 함수 함수의 실행이 프로그램의 실행에 영향을 미치지 않아야 하는 함수 함수 내부에서 인자의 값을 변경하거나 프로그램 상태를 변경하는 Side Effect가 없는 것 num = 1 def add(a): return a + num 위와 같은 예제에서는 add라는 함수 안에서 전역으로 선언된 변수인 num을 참조하기 때문에 순수함수라고 볼 수 없다. // 순수함수 def add(a..

Computer Science 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

[python]백준 11659번: 구간 합 구하기 4(구간합)

# 11659 구간 합 구하기 4 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline N, M = map(int, input().split()) num_list = list(map(int, input().split())) sum_list = [0] result = 0 for i in range(len(num_l..

Algorithm 2023.01.22
728x90
반응형