반응형

알고리즘/BOJ 25

[BOJ] 1062 - 가르침

https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net #include using namespace std; bool alpha[26] = {false, }; vector words; vector new_alpha; vector results; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n, k; cin >> n >> k; for(int i = 0; i < n; i++){ s..

알고리즘/BOJ 2022.08.01

[BOJ] 4179 - 불!

https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net #include #include #include using namespace std; int r, c; int cnt = 0; string board[1001]; int board_fire[1001][1001]; int board_path[1001][1001]; int dx[4] = {-1, 0, 1, 0}; int dy[4] = {0, 1, 0, -1}; queue path; qu..

알고리즘/BOJ 2022.07.10

[BOJ] 2580 - 스도쿠

https://www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net #include #include using namespace std; int cnt = 0; bool flag = false; int board[9][9] = {0, }; vector blank; bool check(int x, int y){ int square_x = x % 3; int square_y = y % 3; for(int i = 0; i < 9; i++){ if(board[x][i] ..

알고리즘/BOJ 2022.07.04

[BOJ] 1339 - 단어 수학

https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net #include #include #include #include using namespace std; bool desc(int a, int b){ return a > b; } int alpha[26] = {0, }; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector v; for(int i = 0..

알고리즘/BOJ 2022.07.01

[BOJ] 2941 - 크로아티아 알파벳

https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net import sys alpha = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] input = list(sys.stdin.readline().rstrip()) input.reverse() sum = 0 while len(input) > 1: str = input.pop() if str == 'c' or str == '..

알고리즘/BOJ 2022.06.27

[BOJ] 단계별로 풀어보기 - 기본 수학 1

지난 겨울방학때 풀고 개강 후 손을 놨던 백준을 다시 풀기로 마음먹었다. 너무 오랜만이라 뇌가 안돌아갈 것 같아서 적당히 뇌를 깨울 수 있는 기본 수학1을 풀어보았다. 파이썬과 C++ 둘다 짜는 것을 연습하고 있지만 수학 문제는 두 언어에서 구현이 다를 것 같지 않아 C++로만 짰다. 마지막 문제 빼고는 코딩적으로 얻어가는 건 없었지만 상당히 재밌었기에 한번에 몰아서 포스팅한다. https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net #include usi..

알고리즘/BOJ 2022.06.27

[BOJ] 2579 - 계단 오르기

https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net n = int(input()) data = [0] * 300 for i in range(n): data[i] = int(input()) dp = [0] * 300 dp[0] = data[0] dp[1] = data[0] + data[1] dp[2] = max(data[0] + data[2], data[1] + data[2]) for i in range(3, n): dp[i] = max(dp[i - 2] + d..

알고리즘/BOJ 2022.02.18

[BOJ] 1149 - RGB거리

https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net import sys n = int(sys.stdin.readline()) graph = [] for _ in range(n): data = list(map(int, sys.stdin.readline().rstrip().split())) graph.append(data) dp = [[0] * 3 for _ in range(n)] dp[0] = graph[0] for i in r..

알고리즘/BOJ 2022.02.18

[BOJ] 12015 - 가장 긴 증가하는 부분 수열 2

https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net import sys from bisect import bisect_left n = int(sys.stdin.readline()) data = list(map(int, sys.stdin.readline().rstrip().split())) dp = [data[0]] for i in range(1, n): if data[i] > dp[-1]: dp.append(data[i]) else: idx = b..

알고리즘/BOJ 2022.02.15

[BOJ] 18353 - 병사 배치하기

https://www.acmicpc.net/problem/18353 18353번: 병사 배치하기 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 2,000) 둘째 줄에 각 병사의 전투력이 공백을 기준으로 구분되어 차례대로 주어진다. 각 병사의 전투력은 10,000,000보다 작거나 같은 자연수이다. www.acmicpc.net import sys n = int(sys.stdin.readline()) data = list(map(int, sys.stdin.readline().rstrip().split())) dp = [1] * n for i in range(1, n): for j in range(0, i): if data[i] < data[j]: dp[i] = max(dp[i], dp[j] + 1) print(..

알고리즘/BOJ 2022.02.14
반응형