목록알고리즘 (508)
어흥
문제 링크: https://www.acmicpc.net/problem/13913 13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 www.acmicpc.net 1. 주의할 점 - 지나온 값들을 저장하는 Vector 구조체에 포함한다 -> 시간초과 - 지나온 값들을 저장하도록 ..
문제 링크: https://www.acmicpc.net/problem/5567 5567번: 결혼식 문제 상근이는 자신의 결혼식에 학교 동기 중 자신의 친구와 친구의 친구를 초대하기로 했다. 상근이의 동기는 모두 N명이고, 이 학생들의 학번은 모두 1부터 N까지이다. 상근이의 학번은 1이다. 상근이는 동기들의 친구 관계를 모두 조사한 리스트를 가지고 있다. 이 리스트를 바탕으로 결혼식에 초대할 사람의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이의 동기의 수 n (2 ≤ n ≤ 500)이 주어진다. 둘째 줄에는 리스트의 길이 m (1 ≤ m www.acmicpc.net 1. 주의할 점 - 상근이가 1번이므로 시작점은 1번이며 1번은 결과에 포함하지 않도록 한다 2. 구현 - List형태로 동기..
문제 링크: https://www.acmicpc.net/problem/3678 3678번: 카탄의 개척자 문제 "카탄의 개척자"는 많은 사람들이 즐기는 보드게임이다. 게임을 시작하려면, 먼저 게임판을 랜덤으로 만들어야 한다. 게임판은 육각형 타일로 이루어져 있으며, 각 타일은 자원을 하나씩 포함하고 있다. 자원은 총 다섯 가지 종류가 있으며, 점토, 재목, 양모, 곡물, 광석이다. 각 자원은 1부터 5까지 순서로 나타낼 수 있다. 랜덤을 이용해서 게임판을 만들면, 같은 자원이 인접한 타일에 있는 경우가 있을 수도 있다. 이런 배치를 매우 싫어하는 사람이 많다 www.acmicpc.net 1. 주의할 점 - 6각형 형태를 어떻게 나타낼 것인가 이 부분에 관해서는 백준의 '주사위 윷놀이' 문제와 비슷하다. ..
문제 링크: https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자 대문자로 매겨지며, 항상 A가 루트 노드가 된다. 자식 노드가 없는 경우에는 .으로 표현된다. www.acmicpc.net 1. 주의할 점 - Node 구조체를 만들 줄 알아야한다. 2. 구현 - Node 구조체를 만든 이후 Nodes 배열을 생성한다. - 각 Node를 생성해준다 - 입력받은 순서에 따라 Node를 연결해준다 #include using namespace std; struct node { n..
문제 링크: https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 나타내는 M개의 정수가 한 개의 빈 칸을 사이에 두고 주어진다. 각 칸에 들어가는 값은 0 이상 10 이하이다. 배열에서 빙산이 차지하는 칸의 개수, 즉, 1 이상의 정수가 들어가는 칸의 개수는 10,000 개 이하이다. 배열의 첫 번째 행과 열, 마지 www.acmicpc.net 1. 주의할 점 - 반복문을 언제 끝내야 하는지 확실히 한다 - 불필요한 부분을 큐, 벡터에 넣지 않는다 2. 구현 - 배열을 ..
문제 링크: https://www.acmicpc.net/problem/7348 7348번: 테이블 옮기기 문제 ACM 회사는 아래 그림과 같은 빌딩의 한 층을 빌렸다. 이 층의 방들은 다음과 같이 번호가 매겨져 있다. 그림처럼 이 층에는 복도를 따라 양쪽 사이드로 각각 200개의 방이 있다. ACM 회사는 이 방들을 리모델링하려는 계획을 세웠다. 당연히 어떤 방에서 다른 방으로 많은 테이블을 옮겨야 한다. 이때 복도는 좁고 테이블이 커서 단지 하나의 테이블만 이 복도를 지날 수 있다. 방에서 다른 방으로 테이블을 옮기는 데 소요되는 시간은 10분 이다. i www.acmicpc.net 1. 주의할 점 - 처음에 입력받는 숫자가 두번째 숫자보다 클 수도 있다 - 서로 마주보는 숫자는 공통된 통로를 지닌다 ..
문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWaJ4g86WA4DFAUQ SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 - 위상정렬과 관련된 문제처럼 보이지만 DP와 관련된 문제다(메모라이즈 기법 사용) - DFS -> 시간초과 - 선수들은 1번부터 Node번호까지 있다 - 비트연산을 할 줄 모르면 고생한다(내가 그 예시다. 비트연산을 사용하지 않고도 할 수는 있지만 되게 더럽고 복잡해보인다. 그 시간에 비트연산을 공부하자) 2. 구현 - 첫 번째 접근: 위상정렬 위상정렬 알고리즘을 이용..
[팰린드롬] 문제 링크: https://www.acmicpc.net/problem/2079 2079번: 팰린드롬 문제 팰린드롬(palindrome)이란 앞에서부터 읽으나 뒤에서부터 읽으나 같은 단어를 말한다. 'aba'나 'a'와 같은 단어는 팰린드롬이며, 'abaccbcb'나 'anavolimilana'와 같은 단어는 팰린드롬이 아니다. 만일 어떤 단어가 팰린드롬이 아니라면, 그 단어는 여러 개의 팰린드롬으로 나누어질 수 있을 것이다. 단어가 주어졌을 때 이를 여러 개의 팰린드롬으로 나누되, 나누어진 팰린드롬의 개수가 최소가 되도록 나누려고 한다. 예를 들어 ab www.acmicpc.net [팰린드롬 분할]문제 링크: https://www.acmicpc.net/problem/1509 1509번: 팰린..