본문 바로가기

Algorithm

(2139)
(C++) - 백준(BOJ) 2526번 : 싸이클 www.acmicpc.net/problem/2526 2526번: 싸이클 두 자연수 N과 P를 가지고 다음 과정을 거쳐서 나오는 숫자들을 차례대로 출력해보자. 처음 출력하는 숫자는 N이고, 두 번째 이후 출력하는 숫자들은 N을 곱하고 P로 나눈 나머지를 구하는 과 www.acmicpc.net 간단한 구현문제였습니다. 풀이방법 1. n은 최대 1000, p가 97까지이므로 나머지를 적용했을 때 96이하의 수가 나오므로 배열 1000개로 어떤 숫자가 몇 번째 항인지를 구할 수 있습니다. 해당 변수는 vector자료형 nums로 선언합니다. 2. while loop를 돌면서 이미 셌던 수가 나올때까지 다음을 수행합니다. 2-1. 수 ne는 n으로 시작합니다. 그러면서 수 ne가 수열에서 몇 번째 항인지를 저장해..
(C++) - 백준(BOJ) 16647번 : Happy Birthday, kipa00! www.acmicpc.net/problem/16647 16647번: Happy Birthday, kipa00! 오늘은 키파의 생일입니다! 오늘로 7,305일, 1,043주 4일, 240개월, 20년의 인생을 멋지게 살아온 키파에게 생일 축하의 편지를 씁시다! 여러분의 편지는 유니코드 다국어 기본 평면(BMP)에 있는 글자 www.acmicpc.net "생일축하"합니다... "생일축하"를 100번 출력하면 됩니다.
(C++) - 백준(BOJ) 2636번 : 치즈 www.acmicpc.net/problem/2636 2636번: 치즈 첫째 줄에는 사각형 모양 판의 세로와 가로의 길이가 양의 정수로 주어진다. 세로와 가로의 길이는 최대 100이다. 판의 각 가로줄의 모양이 윗 줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진 www.acmicpc.net bfs문제였습니다. 풀이방법 1. 판의 테두리는 0이 보장되므로 0,0지점은 0이라고 할 수 있습니다. 2. 입력을 받고, 모두 녹을 때까지 loop를 돕니다. 2-1. 먼저 치즈칸의 개수를 cnt변수에 저장합니다. 2-2. 외부공기임을 표시하기 위해 checkAir함수를 시행합니다. 이는 0,0부터 시작해 bfs를 시행해 모든 외부공기 칸을 -1로 만들어줍니다. 2-3. bfs를 시행합니다. 이는 외부공기와 맏닿아있는..
(C++) - 백준(BOJ) 2174번 : 로봇 시뮬레이션 www.acmicpc.net/problem/2174 2174번: 로봇 시뮬레이션 첫째 줄에 두 정수 A, B가 주어진다. 다음 줄에는 두 정수 N, M이 주어진다. 다음 N개의 줄에는 각 로봇의 초기 위치(x, y좌표 순) 및 방향이 주어진다. 다음 M개의 줄에는 각 명령이 명령을 내리는 순 www.acmicpc.net 구현 문제였습니다. 기존 열,행 형식이 아닌 진짜 x,y좌표평면으로 생각해야 하므로 인덱스 처리가 약간 까다로웠습니다. 풀이방법 1. 입력받고 기존에 많이 했던 행,열의 방식으로 바꾸어 정보를 저장합니다. 2. 그 후 명령마다 반복횟수만큼 방향을 고려해 안전한지 확인하고 로봇을 이동합니다. 벽에 충돌 또는 로봇과 충돌할 경우에는 정답을 갱신해줍니다. 정답(ans 변수)값이 이미 있으면 굳..
(C++) - 백준(BOJ) 14499번 : 주사위 굴리기 www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도 www.acmicpc.net 구현 문제였습니다. 풀이방법 다음과 같이 주사위의 방향을 설정해줍니다. 방향 설정 후 명령어를 입력받을 때마다 정답을 출력해주면 됩니다. Code #include #define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); using namespace std; //위,아래,동,서,남..
(C++) - 백준(BOJ) 14496번 : 그대, 그머가 되어 www.acmicpc.net/problem/14496 14496번: 그대, 그머가 되어 첫째 줄에 머호가 바꾸려 하는 문자 a와 b가 주어진다. 둘째 줄에 전체 문자의 수 N과 치환 가능한 문자쌍의 수 M이 주어진다. (1 > b; cin >> n >> m; for(int i = 1; i > u >> v; graph[u].push_back(v); graph[v].push_back(u); } cout
(C++) - 백준(BOJ) 13913번 : 숨바꼭질 4 www.acmicpc.net/problem/13913 13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net bfs문제였습니다. 풀이방법 숨바꼭질 1과 푸는 방식이 동일하나 출력해야하기 때문에 다음위치로부터 이전위치를 추측할 수 있도록 만들어줍니다. Code #include #define fastio ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); using namespace std; using pii = pair; int ck[100001],..
(C++) - 백준(BOJ) 13549번 : 숨바꼭질 3 www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net bfs문제였습니다. 풀이방법 1. 순간이동하는데에 cost가 들지 않기 때문에 먼저 10만 이전까지 순간이동을 해보는 것이 유리합니다. 따라서 우선순위를 주기 위해 bfs실행시 priority queue를 사용합니다. 2. bfs를 시행합니다. 시행시 다음 이동할 곳이 범위를 초과하면 안되므로 조건부 push를 해줍니다. Code #include using namespace s..