전체 글 47

백준[13458] 시험 감독 (파이썬 풀이)

https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 내가 한 풀이 import sys input=sys.stdin.readline n=int(input()) a=list(map(int,input().split(" "))) b,c=map(int,input().split(" ")) total=0 for i in range(len(a)): a[i]-=b total+=n for i in range(..

코테 공부 2021.10.07

백준[11000] 강의실 배정 (파이썬 풀이)

https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si 한 강의의 종료시간이 그 다음 강의 시간 보다 작아야 같은 강의실을 사용할 수 있다. 강의를 시작시간이 빠른 순으로 정렬한다. 최소힙에 가장 빠른 강의의 종료시간을 넣어준다. 그 다음 강의의 시작시간을 탐색하며 최소힙 첫번째 원소(가장 빠른 강의 종료시간)보다 작을 경우에는 최소힙에 넣어주고, 클 경우에는 힙에서 첫번째 값을 해당 강의의 종료시간으로 갱신해준다. 모든 탐..

코테 공부 2021.10.06

백준[14719] 빗물 (파이썬 풀이

https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 내가 한 풀이 주어진 block 리스트 중 가장 큰 값을 가진 인덱스를 구하고 maxIndex라고 선언한다. 1번째 for문에서는 0부터 maxIndex 까지 돌면서 temp 보다 block[i]가 더 크면, total에 더한 후 temp를 block[i] 값으로 변경해준다. 2번째 for문에서는 w-1부터 maxIndex까지 감소하며 돌면서 같은 동작을 해준다. 마지막에 누적된..

코테 공부 2021.10.06

백준[2588] 곱셈 (파이썬 풀이)

https://www.acmicpc.net/problem/2588 2588번: 곱셈 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. www.acmicpc.net 내가 한 풀이 x=int(input()) y=int(input()) y_=[int(i) for i in str(y)] y_.reverse() for num in y_: print(x*num) print(x*y) 두번째 숫자를 string 형식으로 변환해 한글자 씩 리스트 y_에 넣는다. y_.reverse()를 하여 리스트 순서를 뒤집어 준다. y_를 for문 돌려 숫자 하나씩 x와 곱한 값을 프린트 해준다. reverse() : 리스트 객체 순서를 뒤집어 주는 함수 반환값이 없고 리스트 자체를 바꿔준..

코테 공부 2021.10.06

백준[2504] 괄호의 값 (파이썬 풀이)

https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net 내가 한 풀이 inputs=list(str(input())) stack=[] total=0 for i in range (len(inputs)): now=inputs[i] if now==')': tmp=0 if len(stack)==0: print(0) exit(0) while stack: x=stack.pop() if x=='(': if tmp==0: stack.append(2) else: st..

코테 공부 2021.10.06

백준[14888] 연산자 끼워넣기 (파이썬 풀이)

https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 내가 한 풀이 n=int(input()) nums=list(map(int,input().split(" "))) operator=list(map(int,input().split(" "))) maximum= -1e9 minimum=1e9 def dfs(depth,total,add,sub,mul,div): global maximum, minimum..

코테 공부 2021.10.05

[파이썬/python] 순열(permutations)과 조합(combinations)

순열 서로 다른 n개 중 r개를 뽑아 순서를 고려하여 경우의 수를 나열 nPr의 형태로 표현한다. ex ) ['가','나','다','라'] 중 1등, 2등을 뽑는 방법은 아래와 같다. ['가' '나'] /['가' '다']/['가' '라'] ['나' '가'] /'[나' '다']/'[나' '라'] ['다' '가'] /['다' '나']/['다' '라'] ['라' '가'] /['라' '나']/['라' '다'] 조합 서로 다른 n개 중 r개를 뽑아 순서를 고려하지않고 경우의 수를 나열 nCr의 형태로 표현한다. ex ) ['가','나','다','라'] 중 2개를 뽑는 방법은 아래와 같다. ['가' '나'] /['가' '다']/['가' '라'] '[나' '다']/'[나' '라'] ['다' '라'] 파이썬에서 순열(..

language/python 2021.10.03

백준[1181] 단어정렬 (파이썬 풀이)

https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 내가 한 풀이 from itertools import permutations n=int(input()) nums=list(map(int,input().split(" "))) answer=0 per=permutations(nums) for num in per: tmp=0 for j in range(len(num)-1): tmp+=abs(num[j]-num[j+1]) if tmp>answer: answer=tmp ..

코테 공부 2021.10.03

[알고리즘] brute force 알고리즘 (완전탐색)

brute force알고리즘 가능한 모든 경우의 수를 전부 탐색하는 알고리즘, 즉 완전 탐색 항상 정확도 100%를 보장한다. 단, 모든 경우의 수를 다 탐색하기 때문에 문제에 따라 비효율적일 수 있다. => 현재 자원으로 커버가 가능할 때마다 사용하는 것이 좋다 활용 선형구조에서는 순차탐색 비선형구조에서는 bfs(너비우선탐색), dfs(깊이우선탐색) brute force 활용 문제 https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net

알고리즘 2021.10.03