호우동의 개발일지

Today :

[C++] 백준/BOJ - 7682 : 틱택토
Algorithm/BOJ 2023. 4. 9. 17:16

문제 이해 단계 https://www.acmicpc.net/problem/7682 7682번: 틱택토 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 줄은 9개의 문자를 포함하며, 'X', 'O', '.' 중 하나이다. '.'은 빈칸을 의미하며, 9개의 문자는 게임판에서 제일 윗 줄 왼쪽부터의 순서이다. 입 www.acmicpc.net 3x3 게임판에 O와 X 두 가지를 가지고 게임을 한다. 무조건 X를 먼저 두는 것을 시작으로 X와 O를 번갈아가면서 둔다. 게임에서 이기는 조건은 X나 O가 가로, 세로, 대각선 방향으로 3칸을 잇는 데 성공하는 것이다. 이를 틱택토라고 부르겠다. 틱택토를 성공하는 순간 게임은 즉시 끝난다. 게임판이 가득 차도 게임은 끝난다. 입력으로는 게임판의 최종상태가 주어지는..

article thumbnail
[C++] 백준/BOJ - 3151 : 합이 0
Algorithm/BOJ 2023. 4. 8. 13:04

문제 이해 단계 https://www.acmicpc.net/problem/3151 3151번: 합이 0 Elly는 예상치 못하게 프로그래밍 대회를 준비하는 학생들을 가르칠 위기에 처했다. 대회는 정확히 3명으로 구성된 팀만 참가가 가능하다. 그러나 그녀가 가르칠 학생들에게는 큰 문제가 있었다. www.acmicpc.net N개의 입력이 일렬로 들어온다. 입력은 정수로 들어오는데, 숫자가 -10,000 ~ 10,000 사이로 들어온다. 숫자 3개를 골라서 합이 0이 되는 경우가 몇 가지가 나오는지 찾는 문제. 숫자가 같아도 위치가 다르면 다른 경우의 수로 취급한다. 문제 접근 단계 제한사항부터 살펴보면 N개의 입력은 최대 10,000개까지 들어올 수 있다. 숫자가 3개를 골라야 하기 때문에 10000 C3..

article thumbnail
[C++] 백준/BOJ - 16987 : 계란으로 계란치기
Algorithm/BOJ 2023. 4. 7. 11:04

문제 이해 단계 https://www.acmicpc.net/problem/16987 16987번: 계란으로 계란치기 원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱 www.acmicpc.net N개의 계란이 존재하고, 각 계란에는 (내구도, 무게) 정보가 쌍으로 주어진다.그리고 두 계란이 부딪힐 때 서로의 무게만큼 내구도가 깎여나간다. 내구도가 0 이하가 되면 계란이 깨지는 것으로 간주한다. 그리고 계란을 깨는 과정은 아래와 같이 한다. 1. 가장 왼쪽의 계란을 든다. 2. 손에 들고 있는 계란으로 깨지지 않은 다른 계란 중에서 하나를 친다. 단, 손에 든..

[C++] 백준/BOJ - 21939 : 문제 추천 시스템 Version 1
Algorithm/BOJ 2023. 4. 6. 15:24

문제 이해 단계 https://www.acmicpc.net/problem/21939 21939번: 문제 추천 시스템 Version 1 tony9402는 최근 깃헙에 코딩테스트 대비 문제를 직접 뽑아서 "문제 번호, 난이도"로 정리해놨다. 깃헙을 이용하여 공부하시는 분들을 위해 새로운 기능을 추가해보려고 한다. 만들려고 하는 명령 www.acmicpc.net 문제가 N개 주어지는데, (문제의 번호, 난이도)의 쌍으로 이루어진다. 해당 조건일 때 recommend x로 나오는 출력을 그대로 구현해라는 문제 문제 접근 단계 문제 제한 사항부터 살펴보자. 문제의 개수 N은 최대 100,000개까지, 명령어 M의 개수는 10,000개이다. 최대 100,000개까지의 모든 탐색을 다한다고 해도 10^5 * 10^4..

article thumbnail
[C++] 백준/BOJ - 17070 : 파이프 옮기기 1
Algorithm/BOJ 2023. 4. 6. 09:33

문제 이해 단계 https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net NxN짜리 격자판이 존재한다. 그리고 중간에 벽(1)이 존재한다. 그리고 2칸을 차지하는 파이프가 존재하는데, 무조건 (1,1)과 (1,2)에서 시작한다. 목표는 파이프가 벽에 부딪히지 않고, (N, N)까지 이동하는 것이다. 파이프는 회전이 가능한데, 움직이면서 회전이 가능하다. 회전은 한 번에 45도씩만 가능하다. 움직이는 방향은 →↓↘으로만 움직일 수..

article thumbnail
[C++] 백준/BOJ - 17073 : 나무 위의 빗물
Algorithm/BOJ 2023. 4. 5. 18:11

문제 이해 단계 https://www.acmicpc.net/problem/17073 17073번: 나무 위의 빗물 첫째 줄에 트리의 노드의 수 N과 1번 노드에 고인 물의 양을 의미하는 정수 W가 주어진다. (2 ≤ N ≤ 500,000, 1 ≤ W ≤ 109) 다음 N-1줄에 걸쳐, 트리에 존재하는 간선의 정보가 U V의 형태로 주어진다 www.acmicpc.net N개의 노드와 고인 물의 양 W가 주어진다. 루트 노드는 항상 1번으로 고정이다. 모든 노드는 루트 노드인 1번 노드의 자식 노드이다. 1번 노드로부터 물이 떨어지는데, 떨어지는 규칙은 다음과 같다. 1. 물을 가지고 있을 경우, 자식 노드가 있다면 자식 노드 중 하나를 골라 물을 1 준다. (자식 노드가 여러 개라면 동일한 확률로 하나를 ..

[C++] 백준/BOJ - 19539 : 사과나무
Algorithm/BOJ 2023. 4. 4. 01:08

문제 이해 단계 https://www.acmicpc.net/problem/19539 19539번: 사과나무 첫 번째 줄에 모든 나무가 갊자가 바라는 높이가 되도록 물뿌리개를 통해 만들 수 있으면 “YES”를, 아니면 “NO”를 따옴표를 제외하고 출력한다. www.acmicpc.net 일렬로 1부터 N번까지 나무가 존재하는데, 나무의 초기 높이는 모두 0이다. 그리고 나무를 1 성장시킬 수 있는 물뿌리개와, 나무를 2 성장시킬 수 있는 물뿌리개 2개가 존재한다. 두 물뿌리개는 무조건 동시에 뿌려야 하고, 한 나무에 몰아서 줘서 3을 성장시킬 수 있다. N개의 정수가 주어졌을 때, 해당 물뿌리개들로 해당 높이 배치를 만들 수 있는지 판단하는 문제 문제 접근 단계 문제의 조건부터 살펴보자. 나무의 개수는 최대..

article thumbnail
[C++] 백준/BOJ - 11657 : 타임머신
Algorithm/BOJ 2023. 4. 2. 16:53

문제 이해 단계 https://www.acmicpc.net/problem/11657 11657번: 타임머신 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. www.acmicpc.net N개의 도시와 M개의 버스 노선이 주어진다. M개의 버스 정보로는 A, B, C가 들어오는데, (출발지, 도착지, 걸리는 시간)이다. 걸리는 시간에는 음수도 존재한다. 1번 도시에서 출발해서 각 도시별로 가장 빠른 시간을 출력한다. 이때, 무한대로 음수로 가는 시간이 나올 경우 -1을 출력한다. 또한 그 도시로 갈 수 없..