아기상어가 이동하면서 자기 자신보다 값이 작은 물고기들을 잡아먹는데, 이 물고기를 최대한 잡아먹을 수 있는 시간을 구하는 문제이다.공간은 N\*N이고, 물고기 M마리와 상어 한 마리가 있다. 둘 다 자연수의 크기를 가진다.아기 상어는 상하 좌우로 이동할 수 있다.2-1
N\*M의 연구소가 있다. 이 연구소의 일부 칸에 2로 표현된 바이러스가 있는데, 이 바이러스는 상하좌우로 퍼져나갈 수 있어서 벽을 세워 바이러스를 막으려고 한다.벽은 무조건 3개 세워야하고 1로 표현한다. 아무것도 아닌 영역은 0으로 표현되는데, 벽 3개를 다 세우고
가로 M 세로 N의 배추밭에서 K개의 배추를 심습니다. 배추흰지렁이가 배추 근처에서 해충을 잡아먹는데, 상하좌우의 인접한 배추로 이동할 수 있어서 인접한 배추에 1마리만 놓아도 된다. 여기서 최소 필요한 배추흰지렁이 수를 구하면 되는 문제.T, M, N, K (테스트
첫 번째 줄에 입력받은 수 n으로 map (2차원 배열)을 생성한다.이 다음부터 한 줄을 string으로 입력받았고, 문자열에서 한 문자씩 읽어들이면서 배열에 넣어줌 → chatAt() 메소드 사용했고, -'0' 처리해서 문자→숫자로 변경현재 map과 똑같은 크기의 v
알파벳 name을 입력받고, A를 시작으로 조이스틱을 조종해 name과 똑같은 문자열을 만들어야합니다. 이때 조이스틱의 조작 횟수의 최솟값을 리턴하면 되는 문제입니다.좌 <-> 우 이동 최소 횟수 카운트다음번 A가 나올때까지의 이동 횟수를 셉니다. 인덱스가 마지막
R \* C의 격자판에서 낚시왕이 1초에 한 열씩 이동하며 땅과 가장 가까운 상어를 잡습니다. 상어를 잡으면 해당 좌표의 상어는 사라지고, 남은 상어가 이동합니다. 상어는 속력과 방향, 크기를 가지고 있으며 1초동안 속력만큼의 칸을 이동합니다. 상어의 이동 칸이 격자판
3\*3 배열에서 1초마다 행 개수>= 열 개수일때는 R연산, 행 개수 < 열 개수일때는 C연산을 적용합니다.각 연산은 행, 열을 기준으로 각 수가 몇 번 나왔는지를 기준으로 오름차순 정렬합니다. 똑같은 수로 등장했을 경우는 작은 수부터 정렬합니다. 정렬 후 가장
numbers 배열에 n개의 음이 아닌 정수가 있습니다. 이 수를 더하거나 빼서 target과 같은 수를 만들려고 합니다. 이때 더하거나 빼서 target과 같은 수를 만들 수 있는 방법의 수를 return하면 되는 문제입니다. target과 같은 수를 만들때는 dfs
한 개의 회의실과 N개의 회의(시작 시간, 끝 시간)가 주어졌을때, 각 회의가 겹치지않게 사용할 수 있는 최대 회의 수를 구하는 문제입니다. 처음에 이중 for문을 순회하면서 다음 회의의 시작시간이 현재 회의의 끝 시간과 같거나 큰 경우만 count 해준 후, 마지막에
이웃한 두 요소의 값을 비교하여 값으 교환을 반복하는 정렬입니다. (맨 뒤부터 시작) n-1번째와 n-2번째 인덱스의 값을 비교한다.n-1번째가 n-2번째보다 작으면 서로 값을 교환한다.아닌 경우는 그냥 패스한다.0번째 인덱스까지 교환을 마쳤으면 0번째 요소가 가장 작
크기가 N인 삼각형이 주어지고, 맨 위부터 아래에 있는 수 중에 하나를 선택해 내려올 때, 선택된 수들의 합이 최대인 경우의 값을 리턴하면 되는 문제이다. 한 노드를 기준으로 그 전의 행의 대각선(왼쪽, 오른쪽) 값을 더해서 최대가 되는 값을 현재 노드에 넣어줬습니다.
문제 준서의 배낭에 K 무게 만큼의 물건들을 들고갈 수 있는데 각 물건은 무게와 가치를 가진다. 이때 가져갈 수 있는 물건들의 최대 가치값을 출력하면 되는 문제이다. 풀이 어떻게 풀어야하는지 감이 안와서 검색해서 풀었다. 가로는 물건, 세로는 무게인 2차원 배열이
M\*N의 상자에 도마도가 있다. 0이 안 익은 토마토, 1은 익은 토마토, -1은 토마토가 들어있지 않은 칸이다. 보관 후 하루가 지나면 익은 토마토의 상하좌우에 있는 토마토들이 익는다. (대각선은 X)상자에 있는 토마토가 익는 최소 일수를 구해 출력하면 되는 문제이
N\*N의 땅에 M개의 나무를 심는다. 한 칸에는 여러개의 나무가 심어질 수도 있다. 사계절을 보내면서 각 계절에 맞는 과정을 반복한다. 과정을 반복하며 K년이 지났을 때 살아있는 나무의 개수를 출력하면 되는 문제이다.사계절에 맞는 함수를 만들어서 년수만큼 반복했다.t
세준이가 입력한 식에서 괄호를 적절히 쳐서 식의 값을 최소로 만들면 되는 문제이다.빼는 값을 최대로 만들어주면 되는 문제라고 생각했다. 그래서 -를 기준으로 문자열 덩어리를 나누고, 덩어리만큼 더한 후 빼줬다.예시55-50+4055 - 50+401+3-2-3+2+5+1
수빈이의 위치가 N(0 ≤ N ≤ 100,000), 동생은 K(0 ≤ K ≤ 100,000)에 위치하고 있다. 수빈이는 자신의 위치에서 N+1, N-1, N\*2 만큼 이동할 수 있는데, 이때 수빈이가 동생을 찾을 수 있는 가장 빠른 시간을 구해 출력하면 되는 문제이다
크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터
소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 완성본이 들어있는 한 개의 파일을 만든다. 이 과정에서 두 개의 파일을 합쳐서
축구를 위해 모인 N명을 스타트, 링크 두 팀으로 나눠야한다. Si 에는 i번과 j번이 같은 팀에 속했을 때의 능력치가 주어진다.그래서 팀에 속해지는 능력치는 Si + sj이다. 이때 스타트팀과 링크팀의 능력치 차이가 최소가 되는 경우를 출력하면 된다.1~N 까지의 수
최근에 ICPC 탐사대는 남아메리카의 잉카 제국이 놀라운 문명을 지닌 카잉 제국을 토대로 하여 세워졌다는 사실을 발견했다. 카잉 제국의 백성들은 특이한 달력을 사용한 것으로 알려져 있다. 그들은 M과 N보다 작거나 같은 두 개의 자연수 x, y를 가지고 각 년도를 &l
유현이네 집을 N\*N 격자판으로 나타내고, 한 칸을 (r, c)라고 했을 때 두 칸에 걸쳐 파이프가 있다. 파이프는 가로, 세로, 대각선 방향으로 옮길 수 있고 밀면서 회전이 가능하다. 처음의 파이프가 (1, 1) (1, 2)를 차지하고 있을 때 파이프의 한쪽 끝을
N \* M의 행렬에서 0은 이동 가능한 곳, 1은 벽을 나타낸다. 이때 (1, 1)에서 (N, M)까지 최단 거리로 이동하려고 한다. 이동하면서 딱 한 번의 벽을 부수고 이동할 수 있고, 안 부시고 이동해도 된다. 이때 최단 경로를 구해내는 프로그램을 작성해라. 최단
M \* N의 공장이 있다. 이 공장에는 동,서,남,북으로 이동할 수 있는 로봇이 있고, 바라보고 있는 방향으로 움직일 수 있다. 이때 아래와 같은 두 가지 명령이 존재한다.1\. 현재 방향으로 1~3칸 움직인다. 2\. 왼쪽 or 오른쪽으로 90° 회전한다.로봇의 현
R\*C의 빵집 지도에서 첫 열은 근처 빵집의 가스관, 마지막 열은 원웅이의 빵집을 나타낸다. 이때 건물이 있는 (1인 곳)을 피해 근처 빵집과 원웅 빵집을 연결해야한다. 되도록 많은 가스관을 연결할 수 있는 경우의 수를 구한다.처음에는 BFS로 풀이했는데 생각해보니
상근씨가 빌딩에서 중요한 문서를 훔쳐야한다.. 평면도에는 문서, 문, 열쇠의 위치가 표시되어있고 이미 가지고 있는 열쇠도 있다.'.'는 빈 공간'\*'은 벽'$'은 문서알파벳 대문자는 문알파벳 소문자는 열쇠이미 가지고 있는 열쇠 (없으면 0)처음에 진짜! 혼자 풀려고
N\*N인 지도의 각 칸에는 해당 칸의 높이가 적혀져 있다. 같은 높이인 칸끼리는 지나갈 수 있지만, 높이가 다르면 지나갈 수 없다. 그래서 높이가 1이고 길이는 L인 경사로를 놓아서 지나갈 수 있도록 만들었을 때 건널 수 있는 행/열의 개수를 출력하면 되는 문제이다.
12\*N에 빨, 초, 파, 보, 노랑의 뿌요들이 주어진다. 같은 색의 뿌요들이 상하좌우로 4개 이상 연결되어있으면 한꺼번에 없어진다. 없어지고 나면 1번의 연쇄가 추가되고, 1번의 연쇄에서는 여러 개의 뿌요 그룹이 터질 수 있다. 뿌요들이 주어졌을 떄, 연속으로 일어
WN 크기에 지도에서 C로 표시된 두 칸은 레이저를 쏠 수 있는 칸이다. 빈 칸은 '.', 벽은 ''로 표시된다. 레이저를 발사하면서 거울을 설치해서 방향을 회전 시킬 수 있다. 이때 두 C를 연결하기 위해 설치해야 하는 거울 개수의 최솟값을 구하면 된다.map : 전
창영 vs 상근.. in 동굴..맵을 입력받고, 던지는 횟수만큼 막대를 던지고 (throwStrick), 아래로 내리기 (down)를 반복한다.이때 idx로 방향을 구분한다. throwStick()인자로 높이와 idx(던지는 방향)을 받는다. idx가 1이면 -> 방향
N개의 단어가 포함되어 있는 사전에서, 몇 가지 단어를 이용해 테스트 문장을 만들어야한다. 이때 문장에는 알파벳 소문자 26개가 모두 포함되어 있어야한다. 그리고 각 단어는 한 번씩만 사용해야한다. (순서 무관) 이때 만들 수 있는 테스트 문장의 개수를 구하면 된다.어
김지민쌤이 학생들에게 되도록 많은 단어를 읽을 수 있도록 k개의 글자를 알려주실 예정이다. 몇 개의 글자를 가르쳐야 학생들이 읽을 수 있는 단어가 최대가 될까첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은
지훈씨.. 미로에서 일하느라 고생이 많아요지훈이가 불에 타기 전에 미로에 탈출할 수 있는지, 얼마나 빨리 탈출할 수 있는지를 출력하면 되는 문제이다. 지훈이와 불은 상하좌우로 이동할 수 있고, 불은 4방향으로 확산된다. 지훈이가 탈출하려면 가장자리에서 탈출해야한다.ch
임의의 도시 N개가 있고, 이 도시들은 연결되있을수도 있고 아닐수도 있다. 도시들은 직접적으로 연결되어있지 않아도 건너 건너 갈 수도 있다. 이때 동혁이가 짠 여행경로가 주어졌을 때 여행이 가능한지 여부를 출력하면 된다.union find로 해결했다. parent 배열
N극과 S극 중에 하나를 나타내고 있는 4개의 바퀴를 회전시켜야한다. 회전은 한 칸씩만 회전한다.바퀴의 2번, 6번 방향을 비교해서 각 극이 다르다면 현재 회전한 방향과 반대 방향으로, 같다면 회전하지 않는다. 회전시킬 톱니바퀴와 회전 방향을 입력받고, 서로 맞닿아있는
미로 속에 있는 열쇠를 주워서 문을 열어서 출구를 찾으면 되는 문제이다.열쇠와 문은 a~f이고 열쇠를 가지지 않은 상태에서는 문을 열 수 없다. 이때 미로를 탈출하는데 드는 이동 횟수의 최솟값을 출력한다.원래는 boolean 배열로 key를 관리하려고 했는데 열쇠를 얻
몇 가지 역에 소형 기관차 3대를 배치한다.소형 기관차가 최대로 끌 수 있는 객차의 수는 정해져있고, 그보다 많은 수의 객차를 끌 수 없다. 소형 기관차 3대로 최대한 많은 손님을 운송해야한다.소형 기관차는 연속적으로 이어진 객차를 끌어야한다.DP로 해결한다!int\[
N M의 칸에 \`1 ~(N M)\`의 수가 차례로 부여되어있다. 이때 최대 1칸에 O으로 표시가 된 구간이 있고 (없을 수 도 있음), 1번 칸에서 출발한 로봇이 아래, 오른쪽으로만 이동하면서 이 칸을 반드시 지나가야한다. 이러한 조건을 만족하면서 N \* M 칸
[문제] (https://www.acmicpc.net/problem/17608) 위 그림처럼 막대기가 일렬로 쭉 주어지고, 오른쪽에서 봤을 때 몇 개의 막대가 보이는지 개수를 출력하면 되는 문제이다. 나는 stack을 사용해서 보일 수 있는 막대를 저장하고, 길이를
N\*M의 모눈종이 위에 치즈가 표시되어있고, 이 외의 빈칸은 공기이다. 이때 실내 온도의 공기와 접촉한 치즈는 한 시간만에 녹아버린다. 이때 치즈 내부에 존재하는 빈 공간은 외부 공기와 접촉하지 않은 것으로 가정한다. 또, 모눈종이의 맨 가장자리는 치즈가 놓이지 않음
진짜 오랜만에.. 블로그 포스팅.. 킁냐간만에 이분탐색 문제를 풀어봤는데 접근 방법이 쉽지 않았어서 기록하려고 한다.출발 지점부터 distance만큼의 공간이 있고 그 사이에 바위(rocks)가 존재한다.이때 n의 바위를 제거해을 때, 각 바위 사이의 거리의 최솟값 중