본문 바로가기

알고리즘346

[백준 11507] 카드셋트 (C++) https://www.acmicpc.net/problem/11507문제최근에 진솔이는 로봇 공학을 하기 시작했다. 그래서 포커 카드가 완전한 세트인지 확인하는 로봇을 만들기로 결심했다.그는 프로그램을 작성하는 일을 분담했다. 그 프로그램은 카드의 모양(스페이드(♠), 하트(♡), 다이아몬드(♢), 클럽(♣))을 인식하는 것이다. 문제를 간단하게 하기 위해서 모든 카드는 하나의 모양과 하나의 숫자를 가진다고 가정한다.여기서 그 모양은 실제 그림 대신 문자로 대체한다. P,K,H,T에 해당한다. 그리고 숫자는 1~13에 해당하는 정수이다. 로봇은 각각의 카드를 TXY의 형태로 '카드 이름'을 정하는데 T는 모양에 해당하고 XY는 숫자에 해당한다. 만약 만약 숫자가 1자리 숫자이면 X=0에 해당한다. ex) .. 2024. 10. 3.
[백준 21276] 계보 복원가 호석 (C++) https://www.acmicpc.net/problem/21276문제석호촌에는 N 명의 사람이 살고 있다. 굉장히 활발한 성격인 석호촌 사람들은 옆 집 상도 아버님, 뒷집 하은 할머님 , 강 건너 유리 어머님 등 모두가 한 가족처럼 살아가고 있다.그러던 어느 날, 유구한 역사를 지닌 석호촌의 도서관에 화재가 나서 계보들이 모두 불타고 말았다. 그래도 계보는 있어야 하지 않겠느냐는 마을 어르신인 대일 촌장님의 의견에 따라 석호촌 사람들은 계보 복원가 호석에게 의뢰를 맡기기로 했다.적어도 현재를 함께 살아가는 N 명의 계보는 복원하고 싶은 호석이는 조사를 통해서 각자가 기억하는 조상들의 이름들을 구해냈다. 다행히도 석호촌의 맑은 정기 덕분에 기억력이 굉장히 좋은 주민들은 모든 조상을 완벽하게 기억하고 있다.. 2024. 10. 2.
[백준 1063] 킹 (C++) https://www.acmicpc.net/problem/1063문제8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는 행을 상징한다. 열은 가장 왼쪽 열이 A이고, 가장 오른쪽 열이 H까지 이고, 행은 가장 아래가 1이고 가장 위가 8이다. 예를 들어, 왼쪽 아래 코너는 A1이고, 그 오른쪽 칸은 B1이다.킹은 다음과 같이 움직일 수 있다.R : 한 칸 오른쪽으로L : 한 칸 왼쪽으로B : 한 칸 아래로T : 한 칸 위로RT : 오른쪽 위 대각선으로LT : 왼쪽 위 대각선으로RB : 오른쪽 아래 대각선으로LB : 왼쪽 아래 대각선으로체스판에는 돌이 하나 있는데, 돌.. 2024. 9. 30.
[백준 2503] 숫자 야구 (C++) https://www.acmicpc.net/problem/2503문제정보문화진흥원 정보 영재 동아리에서 동아리 활동을 하던 영수와 민혁이는 쉬는 시간을 틈타 숫자야구 게임을 하기로 했다.영수는 1에서 9까지의 서로 다른 숫자 세 개로 구성된 세 자리 수를 마음속으로 생각한다. (예: 324)민혁이는 1에서 9까지의 서로 다른 숫자 세 개로 구성된 세 자리 수를 영수에게 묻는다. (예: 123)민혁이가 말한 세 자리 수에 있는 숫자들 중 하나가 영수의 세 자리 수의 동일한 자리에 위치하면 스트라이크 한 번으로 센다. 숫자가 영수의 세 자리 수에 있긴 하나 다른 자리에 위치하면 볼 한 번으로 센다.예) 영수가 324를 갖고 있으면 429는 1 스트라이크 1 볼이다.241은 0 스트라이크 2 볼이다.924는 .. 2024. 9. 29.
[백준 14430] 자원 캐기 (C++) https://www.acmicpc.net/problem/14430문제인류의 차세대 인공지능 자원 캐기 로봇인 WOOK은 인간 대신 자원을 캐는 로봇이다. WOOK은 언제나 제한된 범위 내에서 자원을 탐색하며, 왼쪽 위 (1, 1)부터 오른쪽 아래 (N, M)까지 자원을 탐색한다. WOOK은 한 번에 오른쪽 또는 아래쪽으로 한 칸 이동할 수 있으며, 그 외의 방향으로 움직이는 것은 불가능하다. WOOK은 자신이 위치한 (x, y)에 자원이 있는 경우에만 해당 자원을 채취할 수 있다. WOOK이 탐사할 영역에 대한 정보가 주어질 때, WOOK이 탐색할 수 있는 자원의 최대 숫자를 구해라! 입력첫째 줄에 WOOK이 탐사할 영역의 세로길이 N(1 ≤ N ≤ 300)과 가로길이 M(1 ≤ M ≤ 300)이 주어.. 2024. 9. 28.
[백준 21938] 영상처리 (C++) 문제간단하지만 귀찮은 영상처리 과제가 주어졌다. 과제의 명세는 다음과 같다.세로 길이가 𝑁이고 가로 길이가 𝑀인 화면은 총 𝑁 × 𝑀개의 픽셀로 구성되어 있고 (𝑖,𝑗)에 있는 픽셀은 𝑅𝑖,𝑗 (Red), 𝐺𝑖,𝑗 (Green), 𝐵𝑖,𝑗 (Blue) 3가지 색상의 의미를 담고 있다. 각 색상은 0이상 255이하인 값으로 표현 가능하다.모든 픽셀에서 세 가지 색상을 평균내어 경계값 𝑇보다 크거나 같으면 픽셀의 값을 255로, 작으면 0으로 바꿔서 새로운 화면으로 저장한다.새로 만들어진 화면에서 값이 255인 픽셀은 물체로 인식한다. 값이 255인 픽셀들이 상하좌우로 인접해있다면 이 픽셀들은 같은 물체로 인식된다.화면에서 물체가 총 몇 개 있는지 구하는 프로그램을 작성하시오.입.. 2024. 9. 26.
[백준 10971] 외판원 순회 2 (C++) https://www.acmicpc.net/problem/10971문제외판원 순회 문제는 영어로 Traveling Salesman problem (TSP) 라고 불리는 문제로 computer science 분야에서 가장 중요하게 취급되는 문제 중 하나이다. 여러 가지 변종 문제가 있으나, 여기서는 가장 일반적인 형태의 문제를 살펴보자.1번부터 N번까지 번호가 매겨져 있는 도시들이 있고, 도시들 사이에는 길이 있다. (길이 없을 수도 있다) 이제 한 외판원이 어느 한 도시에서 출발해 N개의 도시를 모두 거쳐 다시 원래의 도시로 돌아오는 순회 여행 경로를 계획하려고 한다. 단, 한 번 갔던 도시로는 다시 갈 수 없다. (맨 마지막에 여행을 출발했던 도시로 돌아오는 것은 예외) 이런 여행 경로는 여러 가지가 .. 2024. 9. 25.
[백준 13241] 최소공배수 (C++) https://www.acmicpc.net/problem/13241문제정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다.예:10은 5의 배수이다 (5*2 = 10)10은 10의 배수이다(10*1 = 10)6은 1의 배수이다(1*6 = 6)20은 1, 2, 4,5,10,20의 배수이다.다른 예:2와 5의 최소공배수는 10이고, 그 이유는 2와 5보다 작은 공배수가 없기 때문이다.10과 20의 최소공배수는 20이다.5와 3의 최소공배수는 15이다.당신은 두 수에 대하여 최소공배수를 구하는 프로그램을 작성 하는 것이 목표이다.입력한 줄에 두 정수 A와 B가 공백으로 분리되어 주어진다.50%의 입력 중 A와 B는 1000(103)보다 작다. 다른 50%의 입력은 1000보다.. 2024. 9. 24.
[백준 17390] 이건 꼭 풀어야 해! (C++) https://www.acmicpc.net/problem/17390문제숭실골 높은 언덕 깊은 골짜기에 출제로 고통 받는 욱제가 살고 있다!욱제는 또 출제를 해야 해서 단단히 화가 났다. 그래서 욱제는 길이 N짜리 수열 A를 만들고, A를 비내림차순으로 정렬해서 수열 B를 만들어 버렸다!! 여기서 B를 출력하기만 하면 문제가 너무 쉬우니까 하나만 더 하자. 아래와 같은 질문이 무려 Q개나 주어진다!! (ㅎㅎ;; ㅈㅅ.. ㅋㅋ!!)L R: BL + BL+1 + ... + BR-1 + BR 을 출력한다.욱제의 질문에 답하고 함께 엠티를 떠나자!! 입력첫 번째 줄에 수열 A의 길이 N과 질문의 개수 Q가 공백으로 구분되어 주어진다. (1 ≤ N, Q ≤ 300,000)두 번째 줄에 N개의 정수 A1, A2, ... 2024. 9. 23.