전체 글(724)
-
[백준/BOJ] 백준 21609번 : 상어 중학교
https://www.acmicpc.net/problem/21609 21609번: 상어 중학교 상어 중학교의 코딩 동아리에서 게임을 만들었다. 이 게임은 크기가 N×N인 격자에서 진행되고, 초기에 격자의 모든 칸에는 블록이 하나씩 들어있고, 블록은 검은색 블록, 무지개 블록, 일반 블록 www.acmicpc.net 그룹을 dfs를 통해 확인하면서 확인이 끝나면 해당 그룹의 블록 개수와 무지개 블록의 개수를 반환하는 함수를 만들었고, 블록을 지우는 함수, 중력을 작용하는 함수, 90도 반시계 방향 회전하는 함수를 만들어서 문제를 해결했다. 코드 #include #include #include #include using namespace std; int n, m; int board[20][20]; int d..
2021.06.28 -
[백준/BOJ] 백준 21610번 : 마법사 상어와 비바라기
https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 구름이 이동하는 함수, 비가 내리는 함수, 물 복사를 하는 함수, 구름이 생기는 함수를 만들어서 문제를 해결했다. 코드 #include #include #include using namespace std; int n, m; int board[51][51]; vector move_info; //(방향,거리) int dxdy[9][2] = { {0,0}, {0,-1},{-1,-1},{-1,0}..
2021.06.28 -
[백준/BOJ] 백준 21608번 : 상어 초등학교
https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 학생을 적절한 위치에 배치하고, 점수를 매기는 방식으로 문제를 해결했다. 코드 #include #include #include #include using namespace std; int n; vector board(20, vector(20, 0)); int dxdy[4][2] = { {0,-1},{-1,0},{0,1},{1,0} }; set check[401]; int result =..
2021.06.27 -
[백준/BOJ] 백준 3687번 : 성냥개비
https://www.acmicpc.net/problem/3687 3687번: 성냥개비 각 테스트 케이스에 대해서 입력으로 주어진 성냥개비를 모두 사용해서 만들 수 있는 가장 작은 수와 가장 큰 수를 출력한다. 두 숫자는 모두 양수이어야 하고, 숫자는 0으로 시작할 수 없다. www.acmicpc.net 작은 값을 구하는 방법은 bottom-up 다이나믹 프로그래밍 (아래서부터 하나씩 채워가는 다이나믹 프로그래밍)을 이용해 문제를 해결했고, 큰 값을 구하는 방법은 큰 값은 숫자 1과 7로만 이루어져 있다는 것을 이용하여 문제를 해결했다. 코드 #include #include #include #include using namespace std; int tc; vector smallcache(101, "")..
2021.06.27 -
[백준/BOJ] 백준 14868번 : 문명
https://www.acmicpc.net/problem/14868 14868번: 문명 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 세계의 크기를 나타내는 정수 N(2 ≤ N ≤ 2,000)과 문명 발상지의 수 K(1 ≤ K ≤ 100,000)가 주어진다. 다음 K줄에는 한 줄에 하나씩 문명 발상지 www.acmicpc.net 문명별로 번호를 매기고, 인접한 곳과 합쳐질 때 합치는 것과, 찾는 것을 유니온 파인드를 이용하여 문제를 해결했다. 코드 #include #include #include #include #include using namespace std; vector board(2001, vector(2001, 0)); int n, k; int dxdy[4][2] = { {0,-1},{-..
2021.06.27 -
[백준/BOJ] 백준 17472번 : 다리 만들기 2
https://www.acmicpc.net/problem/17472 17472번: 다리 만들기 2 첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 N개의 줄에 지도의 정보가 주어진다. 각 줄은 M개의 수로 이루어져 있으며, 수는 0 또는 1이다. 0은 바다, 1은 땅을 의미한다. www.acmicpc.net 섬 사이의 길이를 구하고 최소 스패닝 트리를 만드는 방식으로 문제를 해결했다. 코드 #include #include #include #include using namespace std; int n, m; vector board(10, vector(10)); int dxdy[4][2] = { {0,-1},{-1,0},{0,1},{1,0} }; vector edge; //(길이,..
2021.06.27