문제다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다.fibonacci(3)을 호출하면 다음과 같은 일이 일어난다.fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다.fibonacci(2)는 fibonacci(1
문제요세푸스 문제 링크요세푸스 문제는 다음과 같다.1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과
문제소수 구하기 문제 링크M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.입력첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.출력접근 방식M+1 크
문제단어 뒤집기 2 문제 링크문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다.먼저, 문자열 S는 아래와과 같은 규칙을 지킨다.알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져 있다.문자
문제스택 수열 문제 링크스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last
문제오큰수 문제 링크크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오
문제쇠막대기 문제 링크여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다.쇠막대기는 자신보다 긴 쇠막대기 위
문제후위 표기식2 문제 링크후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오.입력첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의
문제조합 0의 개수 문제 링크입력출력접근 방식코드
문제 숨바꼭질 6 문제 링크 수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다. 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이동할 수 있다.
문제후위 표기식 문제 링크수식은 일반적으로 3가지 표기법으로 표현할 수 있다. 연산자가 피연산자 가운데 위치하는 중위 표기법(일반적으로 우리가 쓰는 방법이다), 연산자가 피연산자 앞에 위치하는 전위 표기법(prefix notation), 연산자가 피연산자 뒤에 위치하는
문제회의실 배정 문제 링크한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자.
그리디 개념 바로가기문제회의실 배정 문제 링크세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.괄호를 적절히 쳐서 이 식의 값을 최소로
DP 개념 바로가기문제1로 만들기 문제 링크정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1
DP 개념 바로가기문제쉬운 계단 수45656이란 수를 보자.이 수는 인접한 모든 자리수의 차이가 1이 난다. 이런 수를 계단 수라고 한다.세준이는 수의 길이가 N인 계단 수가 몇 개 있는지 궁금해졌다.N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구하는 프
DP 개념 바로가기문제가장 긴 증가하는 부분 수열 문제 링크수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10,
DP 개념 바로가기문제가장 긴 증가하는 부분 수열 4 문제 링크수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {1
DP 개념 바로가기문제1, 2, 3 더하기 3 문제 링크정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다.1+1+1+11+1+21+2+12+1+12+21+33+1정수 n이 주어졌을 때, n을 1, 2,
DP 개념 바로가기문제타일 채우기 문제 링크3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자.아래 그림은 3×12 벽을 타일로 채운 예시이다.입력첫째 줄에 N(1 ≤ N ≤ 30)이 주어진다.출력첫째 줄에 경우의 수를 출력한다.접근 방식dp
DP 개념 바로가기문제가장 긴 감소하는 부분 수열 문제 링크수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10,
DP 개념 바로가기문제가장 큰 증가 부분 수열 문제 링크수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가
DP 개념 바로가기문제RGB거리 문제 링크RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다.집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아
DP 개념 바로가기문제오르막 수 문제 링크오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다.예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다.수의 길
DP 개념 바로가기문제정수 삼각형 문제 링크위 그림은 크기가 5인 정수 삼각형의 한 모습이다.맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수
DP 개념 바로가기문제포도주 시식 문제 링크효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다.포도주 잔을 선택하면 그
DP 개념 바로가기문제스티커 문제 링크상근이의 여동생 상냥이는 문방구에서 스티커 2n개를 구매했다. 스티커는 그림 (a)와 같이 2행 n열로 배치되어 있다. 상냥이는 스티커를 이용해 책상을 꾸미려고 한다.상냥이가 구매한 스티커의 품질은 매우 좋지 않다. 스티커 한 장을
DP 개념 바로가기문제가장 긴 바이토닉 부분 수열 문제 링크수열 S가 어떤 수 Sk를 기준으로 S1 < S2 < ... Sk-1 < Sk > Sk+1 > ... SN-1 > SN을 만족한다면, 그 수열을 바이토닉 수열이라고 한다.예를 들어, {10, 2
DP 개념 바로가기문제동물원 문제 링크어떤 동물원에 가로로 두칸 세로로 N칸인 아래와 같은 우리가 있다.이 동물원에는 사자들이 살고 있는데 사자들을 우리에 가둘 때, 가로로도 세로로도 붙어 있게 배치할 수는 없다. 이 동물원 조련사는 사자들의 배치 문제 때문에 골머리를
문제카잉 달력 문제 링크최근에 ICPC 탐사대는 남아메리카의 잉카 제국이 놀라운 문명을 지닌 카잉 제국을 토대로 하여 세워졌다는 사실을 발견했다. 카잉 제국의 백성들은 특이한 달력을 사용한 것으로 알려져 있다. 그들은 M과 N보다 작거나 같은 두 개의 자연수 x, y를
문제사탕 게임 문제 링크상근이는 어렸을 적에 "봄보니 (Bomboni)" 게임을 즐겨했다.가장 처음에 N×N크기에 사탕을 채워 놓는다. 사탕의 색은 모두 같지 않을 수도 있다. 상근이는 사탕의 색이 다른 인접한 두 칸을 고른다. 그 다음 고른 칸에 들어있는 사탕을 서로
문제리모컨 문제 링크수빈이는 TV를 보고 있다. 수빈이는 채널을 돌리려고 했지만, 버튼을 너무 세게 누르는 바람에, 일부 숫자 버튼이 고장났다.리모컨에는 버튼이 0부터 9까지 숫자, +와 -가 있다. +를 누르면 현재 보고있는 채널에서 +1된 채널로 이동하고, -를 누
문제테트로미노 문제 링크폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다.정사각형은 서로 겹치면 안 된다.도형은 모두 연결되어 있어야 한다.정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있
문제외판원 순회 2 문제 링크외판원 순회 문제는 영어로 Traveling Salesman problem (TSP) 라고 불리는 문제로 computer science 분야에서 가장 중요하게 취급되는 문제 중 하나이다. 여러 가지 변종 문제가 있으나, 여기서는 가장 일반적
문제링크와 스타트 문제 링크오늘은 스타트링크에 다니는 사람들이 모여서 축구를 해보려고 한다. 축구는 평일 오후에 하고 의무 참석도 아니다. 축구를 하기 위해 모인 사람은 총 N명이다. 이제 스타트 팀과 링크 팀으로 사람들을 나눠야 한다. 두 팀의 인원수는 같지 않아도
문제퇴사 문제 링크상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다.오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다.백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의
문제단지번호붙이기 문제 링크<그림 1>과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우
문제ABCDE 문제 링크BOJ 알고리즘 캠프에는 총 N명이 참가하고 있다. 사람들은 0번부터 N-1번으로 번호가 매겨져 있고, 일부 사람들은 친구이다.오늘은 다음과 같은 친구 관계를 가진 사람 A, B, C, D, E가 존재하는지 구해보려고 한다.A는 B와 친구다.B는
문제 이분 그래프 문제 링크 그래프의 정점의 집합을 둘로 분할하여, 각 집합에 속한 정점끼리는 서로 인접하지 않도록 분할할 수 있을 때, 그러한 그래프를 특별히 이분 그래프 (Bipartite Graph) 라 부른다. 그래프가 입력으로 주어졌을 때, 이 그래프가
문제Two Dots 문제 링크Two Dots는 Playdots, Inc.에서 만든 게임이다. 게임의 기초 단계는 크기가 N×M인 게임판 위에서 진행된다.각각의 칸은 색이 칠해진 공이 하나씩 있다. 이 게임의 핵심은 같은 색으로 이루어진 사이클을 찾는 것이다.다음은 위의
문제소가 길을 건너간 이유 5 문제 링크농부 존의 농장에 원형 길이 있다고 했지만, 길은 그뿐만이 아니다. 그 옆에 일자형 길이 있는데, 1번부터 N번까지의 번호가 붙은 횡단보도 N (1 ≤ N ≤ 100,000)개로 이루어져 있다. 교통사고를 방지하기 위해 존은 각
문제탑 문제 링크KOI 통신연구소는 레이저를 이용한 새로운 비밀 통신 시스템 개발을 위한 실험을 하고 있다. 실험을 위하여 일직선 위에 N개의 높이가 서로 다른 탑을 수평 직선의 왼쪽부터 오른쪽 방향으로 차례로 세우고, 각 탑의 꼭대기에 레이저 송신기를 설치하였다. 모
문제공약수 문제 링크어떤 두 자연수에 공통인 약수들 중에서 가장 큰 수를 최대공약수라고 하고, 두 자연수의 공통인 배수들 중에서 가장 작은 수를 최소공배수라고 한다.예를 들어, 두 자연수 12와 90의 최대공약수는 6이며, 최소공배수는 180이다.이와 반대로 두 개의
문제검문 문제 링크트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다.상근이는 시간을 때우기 위해서 수학 게임을 하기로 했다.먼저 근처에 보이는 숫자 N
문제경비원 문제 링크동근이는 무인 경비 회사 경비원으로 항상 대기하고 있다가 호출이 들어오면 경비차를 몰고 그 곳으로 달려가야 한다. 동근이가 담당하고 있는 곳은 직사각형 모양의 블록으로 블록 중간을 가로질러 차가 통과할만한 길이 없다. 이 블록 경계에 무인 경비를 의
문제배열 돌리기 3 문제 링크크기가 N×M인 배열이 있을 때, 배열에 연산을 R번 적용하려고 한다. 연산은 총 6가지가 있다.1번 연산은 배열을 상하 반전시키는 연산이다.2번 연산은 배열을 좌우 반전시키는 연산이다.3번 연산은 오른쪽으로 90도 회전시키는 연산이다.4번
문제트리 순회 문제 링크이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오.https://www.acmicp
문제요세푸스 문제 링크요세푸스 문제는 다음과 같다.1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과
문제보석 도둑 문제 링크희대의 도둑 효빈이는 세계 최고의 보석가게 영선상에 잠입할 계획이다. 이 영선상은 최고의 보석가게답게 최고의 보안장치를 두고 있는데, 이 보안장치를 해제하지 않는다면 보석을 여러 개 훔쳐갈 시, 보석끼리 달라붙으며 무게가 모든 보석들의 곱으로 늘
문제배열 돌리기4 문제 링크크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 값은 4이다.배열은 회전
문제뱀 문제 링크'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다.게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓
문제이항 계수 2 문제 링크입력출력접근 방식파스칼 삼각형 이론으로 nCr = n-1Cr-1 + n-1Cr 을 활용하여 계산한다코드
문제트리의 부모찾기 문제 링크루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.입력첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된
문제도영이가 만든 맛있는 음식 문제 링크도영이는 짜파구리 요리사로 명성을 날렸었다. 이번에는 이전에 없었던 새로운 요리에 도전을 해보려고 한다.지금 도영이의 앞에는 재료가 N개 있다. 도영이는 각 재료의 신맛 S와 쓴맛 B를 알고 있다. 여러 재료를 이용해서 요리할 때
문제과일 서리 문제 링크민건이네 과일 농장은 N가지 종류의 과일을 재배하는 중이다. 평소 민건이에게 앙심을 품고 있던 지환이는 민건이를 골탕 먹이기 위하여 민건이네 과일 농장에서 과일들을 훔치기로 다짐했다. 지환이는 완벽한 범죄를 위하여 처음 생각한 개수 만큼만 훔치려
문제 행렬 제곱 문제 링크크기가 N\*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다.입력첫째 줄에 행렬의 크기 N과 B가 주어진다. (2 ≤ N ≤
문제 쿼드트리 문제 링크흑백 영상을 압축하여 표현하는 데이터 구조로 쿼드 트리(Quad Tree)라는 방법이 있다. 흰 점을 나타내는 0과 검은 점을 나타내는 1로만 이루어진 영상(2차원 배열)에서 같은 숫자의 점들이 한 곳에 많이 몰려있으면, 쿼드 트리에서는 이를 압
문제격자상의 경로 문제 링크행의 수가 N이고 열의 수가 M인 격자의 각 칸에 1부터 N×M까지의 번호가 첫 행부터 시작하여 차례로 부여되어 있다. 격자의 어떤 칸은 ○ 표시가 되어 있다. (단, 1번 칸과 N × M번 칸은 ○ 표시가 되어 있지 않다. 또한, ○ 표시가
문제222-풀링 문제 링크조기 졸업을 꿈꾸는 종욱이는 요즘 핫한 딥러닝을 공부하던 중, 이미지 처리에 흔히 쓰이는 합성곱 신경망(Convolutional Neural Network, CNN)의 풀링 연산에 영감을 받아 자신만의 풀링을 만들고 이를 222-풀링이라 부르기
문제전구와 스위치 문제 링크N개의 스위치와 N개의 전구가 있다. 각각의 전구는 켜져 있는 상태와 꺼져 있는 상태 중 하나의 상태를 가진다. i(1 < i < N)번 스위치를 누르면 i-1, i, i+1의 세 개의 전구의 상태가 바뀐다. 즉, 꺼져 있는 전구는
문제규영이와 인영이의 카드게임 문제 링크문제의 저작권은 SW Expert Academy에 있습니다입력출력접근 방식각 초마다 사용자 A, B 가 BC의 충전범위 내에 있는지 확인 한다A,B 둘다 BC 의 충전 범위내에 없다면 다음 초로 넘어간다A,B 둘중 한명만 충전
문제 빵집 문제 링크유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다.원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던 중에, 가스비가 제일 크다는 것을 알게되었다. 따라서 원웅이는 근처
[Java] 백준 / 알파벳 / 1987번 > 문제 > 알파벳 문제 링크 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네
문제색종이 붙이기 문제 링크접근 방식왼쪽 위인 0,0 부터 9,9까지 차례대로 탐색하면서 색종이를 큰 것부터 확인하여 붙일 수 있으면 붙인 후 다음 좌표를 본다각 좌표를 색종이의 왼쪽 위로 하여 모든 색종이를 붙일 수 있으면 붙여보고 각각에 대해 다음 좌표에서 붙여보는
문제감시 문제 링크접근 방식문제를 보면 Cctv의 방향을 바꿔가며 최소의 사각지대 수를 찾아 출력해야 하기 때문에 방향을 중복순열로 구하고 해당 방향에 맞게 Cctv의 감시영역을 1\. 4방향 (위 오른쪽 아래 왼쪽)을 가리킬 deltas 배열을 만들고 이를 접근할 인
문제괄호 추가하기 문제 링크접근 방식숫자를 기준으로 1번 숫자와 2번숫자를 0, 2번 숫자와 2번 숫자를 1 ... 이런식으로 N개의 숫자를 받으면 0부터 N/2 개의 괄호를 만들 수 있고 이러한 괄호들을 선택할 최댓값은 (N - N/2)/2개 이다따라서 N/2개 중
문제단어 수학 문제 링크접근 방식알파벳을 키로 , 정수형을 값으로 하는 HashMap을 생성한 후 해당 알파벳을 키로하여 값에 자리수를 더해준다 ( ABC → A : 100 , B : 10, C : 1 )값들을 리스트로 만들고 정렬한 후 큰 값부터 9 , 8 .. 을
문제 마인크래프트 문제 링크접근 방식블럭 높이 값 중 가장 낮은 값부터 가장 큰 값까지의 범위 내에 블럭이 0 이상 남으면서 평지를 만드는 경우를 찾는다해당 경우 중 시간이 짧으면서 높이가 가장 높은 것을 출력한다코드
문제친구 네트워크 문제 링크접근 방식Map 을 통해 새로 입력 받은 친구의 이름과 해당 인덱스를 key value로 저장한다level 배열을 만들고 해당 배열에 자신을 포함하여 연결되어있는 친구 수를 저장한다 (초기화 1)유니온 파인드를 구현하고 유니온 도중에 두 친구
문제 여행 가자 문제 링크접근 방식인접 행렬을 만들고 가장 첫 번째의 도시부터 dfs 탐색을 진행한다첫 번째 도시로부터 dfs 탐색하여 방문한 모든 도시들이 동혁이가 방문해야 할 도시들을 모두 포함하면 YES, 아니면 NO를 출력한다코드
문제 집합의 표현 문제 링크접근 방식유니온 파인드 구현 연습코드
문제아기 상어 문제 링크접근 방식현재 아기 상어 위치에서 bfs탐색으로 가장 가까운 물고기(아기 상어 크기보다 작은 물고기)를 찾고 해당 물고기와 같은 거리에 있는 모든 물고기의 좌표를 list 에 저장한다list에 저장한 좌표를 행 , 열 순서로 오름차순 정렬한 후
문제 개미 문제 문제 링크접근 방식코드
문제 치킨 배달 문제 링크접근 방식치킨집을 조합으로 m개 선택한다선택한 치킨집 좌표로부터 bfs로 탐색한다각각의 집에 도착했을 때 치킨집으로부터의 거리를 모두 더해 이의 최소값을 구한다코드
문제 최단 경로 문제 링크접근 방식간선 정보를 인접 리스트로 저장한다다익스트라 알고리즘을 통해 시작점으로부터 각각 정점에 대한 최소의 경로를 찾아 출력한다코드
문제 연구소 문제 링크접근 방식빈 칸중 벽을 3개 세울 경우의 수를 조합으로 모두 구하여 세 위치를 벽으로 바꾼다벽을 선택한 지도에서 바이러스를 찾아 해당 좌표를 bfs의 큐에 넣어 사방탐색한다빈 칸이 아닌 곳까지 모두 탐색한 후 나머지 빈 칸을 세어 최소값을 저장한다
문제문제 링크접근 방식N\*N 크기의 동굴 맵을 입력 받고 각 좌표들을 모두 정점으로 본 다음, 각 좌표에서 간선을 상하좌우로 연결시킨 후 0,0에서 n-1, n-1 까지의 최소거리를 다익스트라 알고리즘으로 해결한다정점 번호와 해당 정점으로 갈 때 잃는 도둑루피를 가지
문제문제 링크접근 방식증가하는 수열 길이의 변수를 asc, 감소하는 수열 길이의 변수를 desc로 선언한다수열의 이전 수와 현재 수를 비교하여 이전보다 증가했으면 asc는 증가시키고 desc와 answer를 비교하여 더 큰 값을 answer에 저장하고 desc를 1로
문제문제 링크접근 방식방향 정보와 해당 길이는 총 6개가 주어지며 직사각형의 모서리가 파인 육각형의 형태로 참외밭이 주어지기 때문에 입력의 두 방향은 무조건 2개씩 나오게 된다 ex ) 4 2 3 1 3 1 , 1 4 2 3 1 3여기서 반복되는 3 1 3 1 을
문제문제 링크접근 방식자르고 남은 행과 열의 각각 길이 중 가장 긴 값을 곱한다코드
문제문제 링크접근 방식0부터 10만까지의 각 점은 자신의 위치로부터 -1과 1 에 해당하는 점으로 이동할 때의 가중치는 1이고 \*2로 이동할 때의 가중치는 0이다. 따라서 모든 점에 대해 3개에 해당하는 인접리스트를 생성한다그 후 다익스트라 알고리즘을 사용하여 수빈이
문제문제 링크접근 방식각 점에서부터 X점까지의 최단 시간과, 다시 X점에서 각 점으로의 최단시간 합 중 가장 긴 시간을 출력하면 된다X 점에서 각 점까지의 최단시간은 X점을 시작으로 전체 점으로의 최단거리를 구하는 다익스트라 알고리즘을 사용한다각 점에서 X점 까지의
문제문제 링크접근 방식1번 점에서 부터 v1 , v2 를 거쳐 N번 점으로 이동할 경우의 수는 총 두 가지이다따라서 이 두 가지에 대해 최단 경로를 구한다1번 점 → v1 , v1 → v2, v2→ N 에 대해 각각 다익스트라 알고리즘으로 최단거리를 구하여 더한다위와
문제문제 링크접근 방식2차원 배열을 탐색한다행 \* M + 열 을 정점번호로 할당한다현재 정점에서부터 4방 탐색한 후, 탐색한 정점에서 현재 정점으로의 가중치를 현재 정점이 1이면 1, 0이면 0을 준다다익스트라 알고리즘으로 0번 정점부터 M-1번 까지의 최소 거리를
문제문제 링크접근 방식다익스트라 알고리즘을 사용하되 최고의원을 최소 친밀도로 만날때까지 거쳤던 모든 정점을 출력하는 방법만 따로 구현하면 된다및의 알고리즘에서는 시작점에서 각각의 끝 점중 가장 짧은 거리를 저장하는 distance 배열 뒤에 추가로 연결했을 때의 바로
문제문제 링크접근 방식다익스트라 알고리즘으로 시작점과 끝점 사이의 최소 거리를 구한다다익스트라 알고리즘 내에 현재 점을 거치는 다음 점의 최소거리를 갱신할 때 다음 점의 이전 점을 저장하는 preVertex 배열을 생성하여 해당 배열에 최소경로의 현재 점 바로 이전 점
문제문제 링크접근 방식항상 카드 묶음 중 가장 카드 수가 적은 두 묶음을 골라 더해가야 한다우선순위큐로 최소힙을 만들어 최소값을 두 번 뽑아 해당 값을 더한 후 다시 우선순위 큐에 넣어줌을 반복한다코드
문제문제 링크접근 방식java의 java.math.BigDecimal 을 사용하여 큰 수를 연산한다코드
문제문제 링크접근 방식분할정복을 이용하여 기존 O(N) 을 O(logN)으로 줄인다각 계산마다 C를 나누어 준다코드
문제문제 링크접근 방식강의 시작 시간과 종료 시간을 가지는 Lecture 클래스를 생성한다강의 시작 시간을 우선순위로 하여 우선순위 큐에 강의 객체를 넣는다강의 종료 시간을 가지는 우선순위 큐를 생성한다. 이 때 이 강의 종료 시간의 의미는 각 강의실의 종료 시간이므로
문제문제 링크접근 방식행 별로 각 행의 왼쪽에서부터 오른쪽으로의 누적 합을 저장한다sum 변수를 0으로 초기화한 후 x1 행부터 x2행 까지 각 행의 y2 에 위치하는 누적 합에서 y1 -1 에 위치하는 누적 합을 뺀 값을 sum 변수에 더한다코드
문제문제 링크접근 방식미세먼지를 확산시키는 함수, 공기청정기 작동 함수 두 가지의 기능으로 나누어 구현한다미세먼지 확산 (한 번 확산)격자판의 각 값이 1 이상일 경우 Dust 객체(행, 열, 값)를 스택에 보관한다보관한 스택을 꺼내면서 해당 위치에서 사방탐색 후 확산
문제문제 링크접근 방식주사위 위치를 고정하고(위쪽은 0번, 아래쪽은 6번.. 등) 방향을 움직일 때마다 주사위 각 번호의 수를 알맞게 바꿔준다ex) 상 : 0 , 하 : 5 , 좌 : 3, 우 : 2 , 전 : 4, 후 : 1 이라 할 때 동쪽으로 주사위를 이동시키면코
문제문제 링크접근 방식방향을 0 , 1 , 2 , 3 으로 정의한다0 : 오른쪽 , 1 : 위 , 2 : 왼쪽 , 3 : 아래쪽 인 deltas 배열을 만든다방향 리스트를 만들고 그 안에 0을 넣는다드래곤 커브의 세대만큼 반복하면서 기존 방향 리스트에 , 90도 돌린(
문제문제 링크접근 방식가로 방향과 세로 방향을 검사한다현재 값과 다음 값이 같으면 넘어간다현재 값보다 다음 값이 1만큼 낮으면 현재 위치의 다음부터 경사로의 길이만큼의 값이 현재값보다 모두 1만큼 낮은지 체크한다낮은 방향으로 경사로를 설치한 뒤 경사로 설치 유무를 체크
문제문제 링크접근 방식1행 1열에서 스도쿠 함수를 실행한다만약 현재 값이 0이면 1부터 9까지 번호 중 현재 위치에 들어갈 수 있는 각각의 수를 현재 값에 저장하고 다음 열의 스도쿠 함수를 실행시킨 후 다시 현재 값을 0으로 바꾼다현재 값이 0이 아니면 바로 다음 열의
문제문제 링크접근 방식LCS 알고리즘 공식은 다음과 같다 이미지 출처문자열 1과 2 각각 길이+1을 행과 열로 하는 2차원 배열을 만든다0행과 0열의 값은 0이다1행 1열부터 두 문자열의 문자를 비교한다각 문자가 같으면 현재 값에, 현재 위치에서 행 -1 , 열 -1
문제문제 링크접근 방식2차원 배열에 1부터 10까지 카운트 할 배열을 생성한다 ( 3차원 배열 )mapik 는 i행 j열의 k 가 몇 개 누적되었는 지를 의미한다mapik = mapi-1k + mapik - mapi-1k-1 이다 x1, y1 부터 x2, y2 까지 k
문제문제 링크접근 방식가장 중요한 개념은 직사각형을 단 3개로만 나눈다는 것 이라 생각한다가로 혹은 세로로 나눌 모든 경우의 수를 생각한다 (가로는 N-1개, 세로는 M-1개로 나눌 수 있다)나눈 후 두 직사각형에 대해 자르지 않을 직사각형 하나를 선택한다 (경우의 수
문제문제 링크접근 방식스티커를 입력받아 올바른 스티커인지 확인한다 ( 한 행의 모든 값이 0이 아니고, 한 열의 모든 값이 0이 아니고 dfs로 모든 1을 방문했을 때 dfs가 실행된 수가 1이면 통과 )노트북의 각 좌표에서 시작해서 스티커를 붙여보면서 안겹치고 모두
문제문제 링크접근 방식우주선이 연속으로 같은 방향을 가면 안되기 때문에 각각의 2차원 배열에 각 방향을 의미하는 3 크기의 배열을 넣는다 ( 0 : 왼쪽에서 내려옴, 1 : 가운데서 내려옴, 2 : 오른쪽에서 내려옴 )이 때 이 배열 값의 의미는 각각 이전 방향에서
문제문제 링크접근 방식트리 구조처럼 수빈이의 현재 위치에서 -1, \*2, +1로 가는 경우의 수를 확인한다bfs를 활용하여 수빈이의 위치와 시간을 가지는 배열을 큐에 담은 후 동생의 위치에 도달할 때 까지 -1, \*2, +1로 수빈이를 옮기고 시간도 추가하여 다시
문제문제 링크접근 방식왼쪽 혹은 오른쪽으로 파란 공, 빨간 공을 모을 4가지 경우의 수를 모두 구한다예를 들어 왼쪽으로 파란 공을 모을 경우 가장 왼쪽부터 하나씩 검사하여 처음으로 빨간 공이 나왔을 때 이후 부터 파란 공을 센다코드
문제문제 링크접근 방식첫 번째 문자열의 길이와 두 번째 문자열의 길이를 행 열로 하는 2차원 배열을 만들고 각 칸에서 첫 번째 문자열의 문자와 두 번째 문자열의 문자를 비교하여 같을 때 이전 행, 이전 열의 값에 1을 더한 값을 현재 값에 저장한다이 식의 의미는 문자열
문제문제 링크접근 방식처음엔 단순히 bfs의 큐에 현재 숫자와 문자열을 가지는 객체를 넣어 탐색하였으나 시간이 너무 오래 걸렸다. 그 이유는 문자열을 계속 복사해서 현재 객체의 문자열에 넣는 방식이다.문자열을 저장하지 않고 B를 찾은 후 역방향으로 탐색할 수 있도록 부
문제문제 링크접근 방식모든 문자열을 알파벳 순서로 매핑한다.그 후 조합으로 모든 문자열을 짝지어 비교하여 같은 문자열일 때 카운트한다코드
문제문제 링크접근 방식십진수 최댓값을 구하기 위해서는 문자열의 처음부터 K를 찾을 때 까지 M을 sub에 넣어두고 K를 찾으면 “5” 뒤에 sub의 길이만큼 “0”을 붙인다. 만약 반복문을 모두 돌았을 때 sub가 남는다면 sub의 길이만큼 “1”을 뒤에 붙인다십진수
문제문제 링크접근 방식유니온 파인드를 구현하고 사이클이 만들어지면 바로 해당 번호를 출력한다코드
문제문제 링크접근 방식 Kruskal 알고리즘으로 최소 스패닝 트리의 비용을 구한다Kruskal 개념코드
문제문제 링크접근 방식크루스칼 알고리즘으로 사이클이 생기지 않으면서 최소 가중치의 간선을 선택하되 유니온 파인드의 루트를 발전소의 위치로 하여 한 정점이 2개 이상의 발전소와 이어지지 않도록 한다.간선을 연결할 때마다 모든 정점이 발전소와 이어져 있는지 확인하고, 모두
문제문제 링크접근 방식열차 하나 당 20개의 좌석이 있으므로 비트로 열차 내 정보를 표현하면 한 열차 당 20비트이다.따라서 int 배열을 만들고 비트 마스킹으로 각 명령어를 수행하여 열차 정보를 갱신한다그 후 집합에 정수형인 모든 열차 정보를 집어넣어 중복을 제거한
문제문제 링크접근 방식치즈 외부의 공기는 모두 연결되어 있다.따라서 0,0에서 dfs를 한번만 실행하여 가장자리 치즈를 찾아 리스트에 저장하고 이 가장자리 치즈들의 개수가 현재 남아있는 모든 치즈 개수와 같다면 (치즈가 모두 녹는다면) 남아있는 치즈 수를 출력하고, 아
문제문제 링크접근 방식3차원 visited배열을 사용하여 말 이동 가능 횟수까지의 방문을 처리하고 bfs로 목표지점까지 탐색한다코드
문제문제 링크접근 방식기존 2차원 배열을 탐색하는 2차원 방문에, 벽을 부순 후 이동과 벽을 부수지 않고 이동하는 두 가지의 방문이 추가로 필요하기 때문에 3차원 visited배열로 방문을 처리한다주의할 점시작 칸도 거리를 센다코드
문제문제 링크접근 방식모든 scv 체력이 0이 될 때 까지 dfs로 뮤탈리스크의 6가지 공격 패턴으로 탐색한다공격해서 남은 scv의 체력들을 기억하여 가지치기한다.가지치기 조건은 다음과 같다.모든 scv가 죽으면 공격 횟수 최솟값을 갱신한다.이미 방문했을 때 현재의
문제문제 링크접근 방식현재 가로와 세로 위치와, 획득한 열쇠정보, 거리를 가지는 클래스 객체를 bfs 큐에 넣어 4방탐색한다비트마스킹으로 6개의 열쇠 획득 정보를 정수형으로 표현한다코드
문제문제 링크접근 방식유명한 dp의 배낭문제이다배낭의 각 무게에 대해 가장 높은 가치를 기억하면서 최대 배낭 무게까지 반복하며 배낭을 채워나간다코드
문제문제 링크접근 방식여러 방문 방법을 세야하기 때문에 dfs로 목표까지 가는 경로들을 카운트 하였고, 그 도중에 방문했던 파이프 순서를 String으로 저장하고 이전에 방문했는지 확인하면서 가지치기를 했다.방문했던 모든 경로를 저장하고, 이를 확인하는 과정에서 많은
문제문제 링크접근 방식현재 종이 안의 값이 모두 일치하지 않으면 9분할한다.현재 종이 안의 값이 모두 일치하면 그 값을 카운팅 한다.코드
문제문제 링크접근 방식플로이드 와샬 알고리즘을 사용할 수 있는 기본 예제 문제이다.코드
문제문제 링크접근 방식0번째 초밥부터 k번째 초밥까지의 초밥들을 카운팅 배열에 저장하고 중복을 제외한 값을 카운팅한다투포인터로 다음 1번째부터 k+1번째 초밥으로 이동하며 이 때 0번째의 초밥을 카운팅 배열에서 제거하고 k+1번째 초밥을 카운팅 배열에 추가한다.카운팅
문제문제 링크접근 방식0행 0열부터 8행 8열까지 오른쪽, 밑 방향으로 빈칸을 탐색한다.빈칸을 만나면 1부터 9까지 가로 검사, 세로 검사, 네모 검사를 하고 빈칸에 해당 수를 넣을 수 있다면 넣은 후 다음 빈칸을 본다.빈칸이 더 이상 없거나 8행 8열까지 모두 채웠다
문제문제 링크접근 방식투 포인터로 연속 합이 양수일 때까지는 r을 올리면서 합을 더하고, 연속합이 음수가 될 때 l과 r을 r+1로 바꾸고 연속 합을 0으로 초기화 시킨다.그 도중에 최댓값을 계속 갱신시켜준다.코드
문제문제 링크접근 방식각 구역을 red 혹은 red가 아님(blue)으로 부분집합을 구한다.나누어진 구역에 대해 두 구역으로 나뉘어 졌는지 dfs를 통해 검사한다.잘 나누어 졌다면 red와 blue 구역의 총 인구 수를 구하고 그 차이의 최솟값을 갱신한다.코드
문제문제 링크접근 방식dfs로 루트로부터 가장 긴 노드를 찾아 maxNode라 두고, 해당 maxNode 에서 다시 가장 긴 노드를 찾아 그 길이를 출력한다.코드
문제문제 링크접근 방식체스판이 8\*8로 크기가 고정되어있고 1초마다 벽이 아래로 내려가므로 결국 8초 후엔 체스판에 벽이 없어진다.따라서 욱제가 움직이면서 8초만 버틴다면 게임을 승리하는 것이다.각 초에 대한 맵의 상태를 3차원 배열로 표현한다. (map00 ⇒ 0초
문제문제 링크접근 방식단순히 최대 힙과 최소 힙을 만든 후 각각 힙에서 최대,최솟값을 뺄 때 다른 우선순위 큐의 값을 제거해주는 방식을 사용하면 시간초과가 난다.때문에 HashMap 자료구조로 현재 가지고 있는 수를 체크하고, 최대, 최솟값을 뺄 때 Map의 데이터를
문제문제 링크접근 방식단순 구현하는 문제이지만 궁수 행동, 적 행동 순서에 맞게 잘 생각해야하는 문제이다.궁수의 위치를 조합으로 선택한다.궁수를 배치하고 시뮬레이션을 시작한다각 궁수가 공격할 적을 선택한다(궁수는 동일한 적을 공격할 수 있다.) 선택하는 조건은 가장 가
문제문제 링크접근 방식0이 이어져있는 부분들을 각 구역으로 설정하고 구역 번호화 해당 구역의 0 개수를 key와 value로 하는 section이라는 HashMap에 구역 정보를 저장한다.기존 map 외에 0의 구역들을 표시할 이차원 배열을 생성하고 각 0이 해당하는
문제문제 링크접근 방식투포인터로 각 부분의 부분합이 S 이상일 때의 길이 최소를 출력한다.주의할만한 반례코드
문제문제 링크접근 방식각 별들에 대한 모든 간선을 만든 후 해당 간선들의 길이를 오름차순으로 정렬하여 크루스칼 알고리즘으로 최소 신장트리를 만든다.코드
문제문제 링크접근 방식문제에 써있는 대로 로봇청소기의 작동 순서에 맞게 구현한다.주의할 점현재 로봇 방향의 왼쪽 부터 탐색 시작주어진 로봇 방향의 순서는 1 2 3 4 → 북 동 남 서 이지만 로봇의 탐색 순서는 북 서 남 동 이다.동서남북을 다 탐색한 로봇은 현재 방
문제문제 링크접근 방식수열의 크기가 1,000,000 이므로 dp로 풀면 O(n^2) 이기 때문에 시간 초과가 난다.따라서 이분 탐색으로 풀어야 한다. 코드
문제문제 링크접근 방식이분 탐색을 이용하여 LIS 문제를 푸는 과정에서 숫자 배열(arr)의 수가 LIS 배열에 들어가는 인덱스를 rec 배열에 저장한다.그 후 rec 배열의 뒤에서 부터 시작하여 3, 2, 1, 0을 선택하면 가장 긴 증가하는 부분수열의 원소를 구할
문제문제 링크접근 방식convex hull 문제 풀이 순서루트 정점 정하기루트 정점을 기준으로 반시계 방향 정렬하기(ccw활용)스택에 루트 정점을 넣고 정렬한 정점 리스트를 탐색스택입구의 두 번째 점, 첫 번째 점, 탐색한 정점으로 ccw를 구하고 해당 값이 반시계 방
문제문제 링크접근 방식나머지연산은 나눗셈에 대해 분배법칙이 성립하지 않는다.따라서 이를 위해 분모의 역원을 분자에 곱하는 방식으로 바꾼다이 때 페르마의 소정리에 의해 (facrfacn-r)^-1 % P를 facrfacn-r^(P-2)로 바꿀 수 있다.그리고 facr\*
문제문제 링크접근 방식톱니바퀴 클래스 (Gear)를 생성하고 해당 클래스에 톱니바퀴를 돌리는 메서드와 점수를 매기는 메서드를 구현한다.명령어에 따라 톱니바퀴를 선택하고 해당 톱니바퀴의 오른쪽과 왼쪽의 톱니바퀴도 돌려야 하는지 확인한 후 돌려야하면 재귀적으로 다음 톱니바
문제문제 링크접근 방식들고 있을 수 있는 맥주는 20병이고 각 병당 50m를 갈 수 있다. 즉 최대 1000m를 이동할 수 있다.또한 편의점을 들르면 맥주를 다시 20병으로 채울 수 있으니 결국 bfs로 상근이의 집에서부터 1000m안의 편의점과 페스티벌 좌표등을 큐에
문제문제 링크접근 방식코드
문제문제 링크접근 방식플로이드 와샬 알고리즘으로 각각의 파티장들을 서로 연결하는 가장 짧은 거리를 구하고 이용객의 정보를 받아 해당 거리를 시간 안에 갈 수 있는지 없는지를 출력한다.코드
문제문제 링크접근 방식ccw로 다각형을 이루는 삼각형들의 넓이 합을 구한다 ( 입력받은 점들이 반시계방향일 경우 양수, 시계방향일 경우 음수) 이 때 2로 나누지 않는다.현재 합이 짝수이면 반올림 받지 않은 것이므로 2로 나눈 후문자열 “.0”을 더하고 현재 합이 홀수
문제문제 링크접근 방식최소 스패닝 트리를 구하면서 트리를 구성하는 간선 비용의 합을 구한 후 여기에 간선의 최댓값을 빼면 두 마을을 분리하는 길의 유지비 최솟값을 구할 수 있다.최소 스패닝 트리를 구하는 방법은 kruskal과 prim이 있는데 kruskal은 익숙해서
문제문제 링크접근 방식3가지 연산을 통해 나온 결과를 k로 가정할 때 N부터 k까지의 거리 최솟값을 구하기 위해 dp를 활용한다.dp에서의 점화식은 다음과 같다또한 dp에 최소 거리가 갱신될 때 해당 수의 부모를 parent 배열에 저장하여 추후에 1부터 역탐색하여 1
문제문제 링크접근 방식LCS dp 테이블의 점화식은 다음과 같다.LCS dp 테이블을 만들었다면 맨 오른쪽 아래 값이 LCS의 길이가 된다.또한 공통 부분수열을 구하는 방법은 다음과 같다.LCS배열의 가장 오른쪽 아래에서 시작한다. 결과값을 저장할 문자열 answer를
문제문제 링크코드
문제문제 링크접근 방식특성을 오름차순 정렬한다.처음 i번째 용액을 선택하고 i+1과 N-1 사이에서 두 용액을 선택하여 0에 가까운 값을 찾는다.i+1과 N-1을 left, right로 두고 i, left, right 용액 합이 0보다 크면 right를 줄이고 0보다
문제문제 링크접근 방식유클리드 호제법을 사용하여 첫번째 링과 i번째 링의 최대 공약수를 구한 후 각각을 나눠 기약분수꼴로 나타낸다.코드
문제문제 링크접근 방식bfs로 A에서 2를 곱한 값과 오른쪽에 1을 더한 값을 카운트와 함께 배열로 저장해가며 탐색한다.A에서 cnt만큼 이동한 value 값이 B와 같으면 answer를 cnt+1로 설정하고 bfs를 탈출한다.만약 value 값이 B보다 크면 cont
문제문제 링크접근 방식이 문제의 핵심은 사이클 갯수를 세는 것이다.사이클 갯수를 세기 위해서는 union-find 방법이 있고 dfs로도 가능하다.dfs로 풀이할 경우방문하지 않았던 점에서 dfs를 시작, 방문 했던 점을 탐색할 때 까지 dfs 반복방문 했던 점을 탐색
문제문제 링크접근 방식위상 정렬 알고리즘을 사용한다.위상정렬 알고리즘의 특징은 정렬한 배열이 여러개일 수 있다는 점이다.위상정렬 알고리즘키가 작은 학생이 큰 학생을 가리키는 방향 그래프에서 각 학생의 진입 차수를 구한다.진입 차수가 0인 학생의 번호를 큐에 넣는다.큐에
문제문제 링크접근 방식두 사람(target1, target2의 연결 상태와 연결 길이를 구하면 되는 문제이다.target1에서 bfs로 탐색하여 target2를 찾으면 해당 길이를 출력하고 찾지 못하면 -1을 출력한다.코드
문제문제 링크코드
문제문제 링크접근 방식입력 받은 추의 무게로 만들 수 있는 무게를 찾는다.찾은 무게 중에서 구슬 무게가 있다면 Y, 없으면 N을 출력한다.입력 받은 추의 무게로 만들 수 있는 모든 무게를 찾기 위해 DP를 활용한다.각 추에 대해 해당 추로 만들 수 있는 모든 무게를 담
문제문제 링크현민이는 트리 모양의 길 위에서 오토바이를 타고 전단지를 돌리려고 한다. 현민이의 목표는 케니소프트에서 출발하여 모든 노드에 전단지를 돌리고, 다시 케니소프트로 돌아오는 것이다. 현민이는 힘이 좋기 때문에 현재 노드에서 거리가 D 이하인 모든 노드에 전단지
문제문제 링크작고 특이한 모양의 유성 사진이 인터넷에 올라왔다. 사진에는 매우 높은 곳에서 떨어지고 있는 유성이 허공에 찍혀 있었다. 유성이 떨어지고 난 뒤의 사진도 있었지만 안타깝게도 소실돼버려 이를 복원해야 한다.유성 사진을 문자의 배열로 단순화시켜 표기할 것이다.
문제문제 링크n개의 정점을 갖는 이진 트리의 정점에 1부터 n까지의 번호가 중복 없이 매겨져 있다. 이와 같은 이진 트리의 인오더와 포스트오더가 주어졌을 때, 프리오더를 구하는 프로그램을 작성하시오.접근 방식인오더와 포스트오더, 그리고 프리오더의 관계를 알면 풀 수 있
문제문제 링크여행을 떠난 세준이는 지도를 하나 구하였다. 이 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 한 칸은 한 지점을 나타내는데 각 칸에는 그 지점의 높이가 쓰여 있으며, 각 지점 사이의 이동은 지도에서 상하좌우 이웃한 곳끼리만 가능하
문제문제 링크명우는 홍준이와 함께 팰린드롬 놀이를 해보려고 한다.먼저, 홍준이는 자연수 N개를 칠판에 적는다. 그 다음, 명우에게 질문을 총 M번 한다.각 질문은 두 정수 S와 E(1 ≤ S ≤ E ≤ N)로 나타낼 수 있으며, S번째 수부터 E번째 까지 수가 팰린드롬
문제문제 링크n × n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에서 대나무를 먹는다. 그런데 단 조건이 있다. 이 판다는
문제문제 링크우리는 스마트폰을 사용하면서 여러 가지 앱(App)을 실행하게 된다. 대개의 경우 화면에 보이는 ‘실행 중’인 앱은 하나뿐이지만 보이지 않는 상태로 많은 앱이 '활성화'되어 있다. 앱들이 활성화 되어 있다는 것은 화면에 보이지 않더라도 메인 메모리에 직전의
문제문제 링크수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다.이런 사실에 놀란 수빈이는 간단한 게임을 만들기로
문제문제 링크n가지 종류의 동전이 있다. 각각의 동전이 나타내는 가치는 다르다. 이 동전을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그 경우의 수를 구하시오. 각각의 동전은 몇 개라도 사용할 수 있다.사용한 동전의 구성이 같은데, 순서만 다른 것은
문제문제 링크KOI 어린이집에는 N명의 아이들이 있다. 오늘은 소풍을 가는 날이다. 선생님은 1번부터 N번까지 번호가 적혀있는 번호표를 아이들의 가슴에 붙여주었다. 선생님은 아이들을 효과적으로 보호하기 위해 목적지까지 번호순서대로 일렬로 서서 걸어가도록 하였다. 이동
문제문제 링크크기가 N×M인 행렬 A와 M×K인 B를 곱할 때 필요한 곱셈 연산의 수는 총 N×M×K번이다. 행렬 N개를 곱하는데 필요한 곱셈 연산의 수는 행렬을 곱하는 순서에 따라 달라지게 된다.예를 들어, A의 크기가 5×3이고, B의 크기가 3×2, C의 크기가
문제문제 링크두 전봇대 A와 B 사이에 하나 둘씩 전깃줄을 추가하다 보니 전깃줄이 서로 교차하는 경우가 발생하였다. 합선의 위험이 있어 이들 중 몇 개의 전깃줄을 없애 전깃줄이 교차하지 않도록 만들려고 한다.예를 들어, < 그림 1 >과 같이 전깃줄이 연결되어 있
문제문제 링크서기 2012년! 드디어 2년간 수많은 국민들을 기다리게 한 게임 ACM Craft (Association of Construction Manager Craft)가 발매되었다.이 게임은 지금까지 나온 게임들과는 다르게 ACM크래프트는 다이나믹한 게임 진행을
문제문제 링크페이스북, 트위터, 카카오톡과 같은 사회망 서비스(SNS)가 널리 사용됨에 따라, 사회망을 통하여 사람들이 어떻게 새로운 아이디어를 받아들이게 되는가를 이해하는 문제가 중요해졌다. 사회망에서 사람들의 친구 관계는 그래프로 표현할 수 있는데, 이 그래프에서
문제문제 링크선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다.함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는
문제문제 링크케빈 베이컨의 6단계 법칙에 의하면 지구에 있는 모든 사람들은 최대 6단계 이내에서 서로 아는 사람으로 연결될 수 있다. 케빈 베이컨 게임은 임의의 두 사람이 최소 몇 단계 만에 이어질 수 있는지 계산하는 게임이다.예를 들면, 전혀 상관없을 것 같은 인하대
문제문제 링크가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오.입력첫째 줄에 정점의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄부터 N개 줄에는 그래프의 인접 행
문제문제 링크접근 방식substring을 활용한 방법을 사용했더니 절반만 통과하였다.때문에 O(N)의 방법으로 문제를 해결해야 한다.문자열을 처음부터 탐색하여 “I”를 찾으면 그 뒤의 “OI” 개수를 센다.입력받은 Pn의 n보다 “OI” 개수가 같거나 크면 그 차이 개
문제문제 링크숫자 1, 2, 3으로만 이루어지는 수열이 있다. 임의의 길이의 인접한 두 개의 부분 수열이 동일한 것이 있으면, 그 수열을 나쁜 수열이라고 부른다. 그렇지 않은 수열은 좋은 수열이다.다음은 나쁜 수열의 예이다.333323 2121 123123213다음
문제문제 링크백준이는 동생에게 "가운데를 말해요" 게임을 가르쳐주고 있다. 백준이가 정수를 하나씩 외칠때마다 동생은 지금까지 백준이가 말한 수 중에서 중간값을 말해야 한다. 만약, 그동안 백준이가 외친 수의 개수가 짝수개라면 중간에 있는 두 수 중에서 작은 수를 말해야
문제문제 링크영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다.영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만들어 보려고 한다.화면에 있는 이모티콘을 모두 복사해서 클립보드에 저
문제문제 링크N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 Ar명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형
문제문제 링크N(2 ≤ N ≤ 10,000)개의 섬으로 이루어진 나라가 있다. 이들 중 몇 개의 섬 사이에는 다리가 설치되어 있어서 차들이 다닐 수 있다.영식 중공업에서는 두 개의 섬에 공장을 세워 두고 물품을 생산하는 일을 하고 있다. 물품을 생산하다 보면 공장에서
문제문제 링크숌 회사에서 이번에 새로운 전략 시뮬레이션 게임 세준 크래프트를 개발하기로 하였다. 핵심적인 부분은 개발이 끝난 상태고, 종족별 균형과 전체 게임 시간 등을 조절하는 부분만 남아 있었다.게임 플레이에 들어가는 시간은 상황에 따라 다를 수 있기 때문에, 모든
문제문제 링크접근 방식바깥 테두리는 무조건 공기이므로 0,0 좌표로부터 치즈가 아닌곳이 외부 공기이다.외부공기와 2변 이상 접촉한 치즈만 1시간 후에 사라진다. 0,0 좌표에서 치즈가 아닌 곳을 bfs 탐색한다.외부와 접촉한 수를 저장할 temp 를 만들고, 치즈를 만
문제문제 링크접근 방식재귀로 Combination을 구현하고 0 ~ 24 중 7개의 수를 선택한다.선택한 7개의 수를 좌표로 변환하고 S파가 4명 이상인지 확인한다.2번을 만족할 때 7개의 좌표 중 한 좌표에서 bfs 탐색했을 때 7개의 좌표가 모두 탐색된다면 경우의
문제문제 링크접근 방식i = 2 ~ N일 때 N개 중 i개의 문제를 조합으로 선택한다.조건 : 선택한 i개의 문제의 난이도 합이 L 이상 R 이하일 경우조건 : 선택한 i개의 문제 중 쉬운 문제와 어려운 문제의 난이도 차이가 X 이상일 경우2번과 3번을 모두 만족할 경
문제문제 링크접근 방식문제의 요구는 다음과 같다.뿌요는 상하좌우로 연결되고 같은 색의 뿌요가 4개 이상 모이면 터진다.터질 수 있는 뿌요 그룹이 여러 개면 한번에 터진다터진 후 중력의 영향을 받아 아래로 떨어진다터진 후 뿌요들이 내려와 다시 터짐을 반복할 때 연속으로