똑같은 수나 문자를 여러 번 곱하는 것을 거듭제곱이라고 한다. 흔히 우리가 말하는 2의 4제곱(2^4=16), 5의 3제곱(5^3=125) 등은 거듭제곱을 표현한 것이다. 당연히 코드를 통해서 이를 빠르게 계산할 수 있다. 반복문 사용 a의 n제곱 값을 구하고 싶을 때, for문을 사용해 직관적으로 다음과 같은 코드를 작성할 수 있다. def power(a, n): ans = 1 for _ in range(n): ans *= a return ans 재귀함수 사용 반복문이 아닌 재귀적 방식으로도 위 코드를 구현할 수 있다. a의 n제곱을 쭉 풀어보면 다음과 같다. 위 식은 부분문제로 나눌 수 있다. 만약 a의 n제곱이 아닌 a의 n+1제곱을 구하고자 할 땐 a^n의 값에 a를 한 번 더 곱해주면 되는데, ..
분류 전체보기
문제 (링크) https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net 나의 풀이 # 오답 import sys from collections import deque input = sys.stdin.readline move = [ [1, 0], [-1, 0], [0, 1], [0, -1] ] r, c = map(int, input().split()) dist = [[int(1e9)] * c for _ in range(r)] q_jihun =..
문제 (링크) https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 나의 풀이 import sys import heapq input = sys.stdin.readline n, m = map(int, input().split()) start = int(input()) graph = [[] * (n+1) for _ in range(n+1)] INF = int(1e9) distance = [INF] * (n+1) fo..
문제 (링크) https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 나의 풀이 n = int(input()) stairs = [0] * (n + 1) d = [0] * (n + 1) for i in range(1, n + 1): stairs[i] = int(input()) # 계단은 한 번에 한 개 or 두 개 # 세 개 연속 X # 마지막 무조건 도착 if n == 1: print(stairs[n]) elif n == 2: print(stairs[1] + st..
트랜잭션이란? 트랜잭션은 은행 ATM이나 데이터베이스등의 시스템에서 사용되는 더 이상 쪼갤 수 없는 업무 처리의 최소 단위이다. 예를 들어 A가 B의 계좌로 1000원을 입금하는 행위가 발생할 때, "A의 계좌에서 1000원이 빠진다." 와 "B의 계좌에 1000원이 더해진다."는 더 이상 쪼갤 수 없는 최소 단위라고 할 수 있다. 이는 즉, A가 돈을 지불하는 행위와 B가 돈을 받는 행위가 분리될 수 없으며 하나의 작업으로 묶여야한다는 것을 의미한다. 트랜잭션의 특징 → 데이터베이스 작업에서 오류가 발생할 경우 데이터를 복구하는 단위가 된다. → 데이터베이스에서 한 번에 여러가지 작업이 일어날 때, 이것들을 분리해주는 작업 단위가 된다. → 트랜잭션은 묶인 작업이 모두 실행되거나 모두 실행되지 않아야한..
파이썬은 집합(고등수학에서 배우는 그 집합)을 처리하기 위한 자료형 set을 제공한다. 집합 자료형은 set()으로 선언하며, 안에 들어갈 원소들을 리스트 형태로 넘겨주면 된다. data = set([1, 4, 9, 11, 3]) print(data) # {1, 3, 4, 9, 11} 집합 자료형의 특징은 크게 두 가지가 있다. 중복값을 허용하지 않는다. 원소들 간 순서가 정해져있지 않다. 중복값을 허용하지 않기 때문에 동일한 값의 원소를 여러 개 넣더라도 집합 안에는 하나의 원소만 남게된다. data = set([1, 4, 4, 4, 9, 11, 3]) print(data) # {1, 3, 4, 9, 11} 순서를 갖지 않기 때문에 리스트처럼 인덱싱하는 것이 불가하다. data = set([1, 4, ..
문제 (링크) https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 나의 풀이 n = int(input()) schedule = [] for _ in range(n): schedule.append(list(map(int, input().split()))) schedule = sorted(schedule, key= lambda x: x[0]) schedule = sorted(schedule, key= lambda x: x[1]) ans = 1 end_time = schedule[0][1] for i in range(1, n): if end_time
Crontab? 크론탭은 특정 파일이 특정 시간에 정기적으로 실행될 수 있도록 도와주는 유틸이다. 매일 특정 시간에 실행시켜야 하는 파일이 있다면 크론탭을 통해 서버에 올려놓고 사용하는 식이 대부분이다. 명령어 # 크론탭 작업 목록 crontab -l # 크론탭 수정 crontab -e # 크론탭 작성 내용 삭제 crontab -r 작성 크론탭을 사용할 때는 파일이름과 해당 파일이 동작할 시간을 함께 작성해준다. 아마 초기 작성시에는 사용할 편집기를 고르게 하는데 nano든 vim이든 본인이 편한 걸로 사용해주자. * * * * * /home/mydir/someFileToExecute.sh * 은 첫 번째부터 - 분 (0~59) - 시 (0~23) - 일 (1-31) - 월 (1~12) - 요일 (0~7..