
https://www.acmicpc.net/problem/1236문제접근문제 해결코드using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);}
https://www.acmicpc.net/problem/1259 팰린드롬이란? > 어떤 단어를 뒤에서부터 읽어도 똑같은 단어를 팰린드롬이라고 한다. ex) 'radar', 'sees' 문제 > 각 입력마다 1이상 99,999 이하의 정수가 주어진다. > 마지막 입력은 0이 주어지며 문제에 포함되지 않는다. > 입력받은 수가 팰린드롬수이면 'yes', ...

https://www.acmicpc.net/problem/1292문제접근범위가 들어오면 각각의 1부터 해당 범위 -1 까지의 합을 구한다.그리고 두 수열의 합을 빼주면 처음범위 부터 마지막 범위 -1 까지의 합을 구할 수 있다.마지막 범위에 해당하는 수를 구해

https://www.acmicpc.net/problem/1296 문제

https://www.acmicpc.net/problem/1333문제접근곡의 수만큼 반복하며 곡 재생시간에 전화벨을 듣지 못하니 전화벨 이후인 쉬는시간 범위에 전화벨 주기가 맞는지 확인하여 주기가 맞다면 그 시간을 출력하도록 했다.문제해결코드후기전화벨이 계속

https://www.acmicpc.net/problem/1356유진수란?어떤 수를 10진수로 표현한 뒤 그 수를 두 부분으로 나눴을 때, 앞부분 자리수의 곱과 뒷부분 자리수의 곱이 같을 때를 말하는 수 이다.문제접근각 자리 수를 인덱스로 하여 반복문을 돌며
https://www.acmicpc.net/problem/1373 문제 접근 > 2진수의 오른쪽에서 4번째는 2의 3승 즉 8이므로 오른쪽부터 세 자리씩 잘라서 계산하면 8진수로 변환할 수 있다. 문제 해결 코드 후기 > 생각보다 쉬웠지만 2진수 자리에 4,2
https://www.acmicpc.net/problem/1524 문제 접근 > 각 병사들의 힘의 최소값을 구해서 서로 비교한 후 약한쪽의 병사를 죽인다. 만약 최소값이 같다면 세비쪽을 하나 죽인다. 이를 한명이 남을때 까지 반복하고 남은 값을 가진 쪽의 이름을 출
https://www.acmicpc.net/problem/1526 문제 접근 > 7과 4로만 수를 만들 수 있으므로 입력받은 수보다 작은수 중 올 수 있는 가장 큰 경우를 찾아 출력한다. 문제해결 코드 후기 > 들어온 수 보다 작은 수를 7과 4로 조합해서 만
https://www.acmicpc.net/problem/1546 문제 접근 > 점수를 입력받으면서 각 점수를 비교해 최대점수를 먼저 구한다. 주어진 수식을 구현해 점수를 넣어 새로 성적표를 만들고 평균을 구해 출력한다. 문제해결 코드 후기 높은 점수도 수식에

https://www.acmicpc.net/problem/1551문제접근N과 K, 수열A를 입력받고 문제에 주어진 수식을 적용해 K번 반복한다.문제해결코드후기정작 코드는 10분도 안돼서 썼는데 입력형식의 콤마와 출력의 콤마.. 그놈의 콤마 때문에 몇시간 걸렸다

https://www.acmicpc.net/problem/1672문제접근Map으로 염기서열표를 만들고 입력받은 DNA값과 대조해서 염기서열을 찾아 새로 DNA를 작성한다.문제해결코드후기Map으로 염기서열표 만드는것까진 생각했는데 Map<char, char

https://www.acmicpc.net/problem/1834문제접근N으로 나누었을때 가능한 나머지는 1부터 N-1까지다.구해야하는 수는 몫과 나머지가 같은 수 니까 몫 \* N + 나머지 하면 된다.문제해결수식코드후기푸는 방법은 5분만에 나왔지만 반복문의

https://www.acmicpc.net/problem/1834문제접근에라토스테네스의 체를 이용해 소수를 미리 구해둔다.입력받은 수를 해당 소수들로 쭉 나눴을때 하나라도 나눠지면 NO, 아니라면 YES를 출력한다.10^6보다 작은 소수를 포함하지 않는 수 라

https://www.acmicpc.net/problem/1764문제접근듣도못한 사람과 보도못한 사람을 map으로 정렬한다.겹치는 사람을 찾고 이를 비교해 사전순으로 출력한다.문제해결코드후기반복문으로 완전탐색 했더니 런타임에러로 계속 틀렸다.친구의 조언으로 m

https://www.acmicpc.net/problem/1855 문제 접근 > 주어진 문자열을 열의 개수로 나눠 행의 개수를 구한 뒤 암호화되어있는 문자열을 위에서 아래로가 아닌 왼쪽에서 오른쪽으로 배열에 다시 채운다. 이때 짝수 행은 반대로 행하면 초기의 문자열

https://www.acmicpc.net/problem/1894 문제 접근 > 8개의 입력을 각 점의 x,y좌표로 입력받아 저장한다. 각 점 중에서 같은 좌표인 점의 경우를 모두 따져 점을 정렬하고 4번째 점을 구하는 수식을 이용해 점을 구한다. 문제해결 코드

https://www.acmicpc.net/problem/1924문제접근각 달의 일 수를 vector에 저장해 놓고 월과 일이 들어오면 전달까지의 모든 일수를 더하고 추가로 들어온 일 수를 더한다.그 값을 7로 나눠 나온 나머지에 따라 요일을 출력한다.문제해결

https://www.acmicpc.net/problem/1934문제접근두 자연수의 최소공배수는 두 자연수의 곱 / 최대공약수로 구할 수 있다. 최소공약수는 유클리드 호제법을 사용하면 된다.유클리드 호제법은 a,b에 대해 a를 b로 나눈 나머지를 r이라고하고

https://www.acmicpc.net/problem/1942문제접근시간정수를 얻기 위해 먼저 디지털 시계를 정의하고 시작구간 끝구간을 이용해 반복문을 돌려 얻은 정수들을 3의 배수인지 검증한다.문제해결코드후기while문을 깨는 조건을 시작시간이 끝나는 시

https://www.acmicpc.net/problem/1676 문제 접근 > 0을 발생시키는건 2x5일 때이므로 N을 소인수 분해 했을때 2x5의 개수를 보면 되는데 2와 5중 더 작은 개수를 세면 된다. 하지만 2는 모든 짝수에 들어 있으므로 5가 항상 적기

https://www.acmicpc.net/problem/1952문제접근0,0에서 시작해서 처음에 열의 인덱스가 증가하고 꽉채면 행의 인덱스가 증가하는걸 반복할때 마다 각각의 최대값을 1씩 낮추며 반복하는데 최대값이 줄어들때, 즉, 방향이 꺾일때 cnt값을 증

https://www.acmicpc.net/problem/1975문제접근N에 대해 N진수까지 반복하며 N진수로 변환하는 과정을 한다. 연손된 0의 개수를 세어야 하므로 0이 연속되지않으면 지금까지 나온 0의 개수를 저장하고 다음 진수로 넘어간다.문제해결코드후기

https://www.acmicpc.net/problem/2033문제접근수를 10, 100, 1000..과 비교하며 조건에 만족하면 해당 자리를 반올림 하고 수를 변화시켜 계속 조건을 검증한다.문제해결코드후기if문의 반올림 검증 부분에서 만약 수가 446이면

https://www.acmicpc.net/problem/2052문제접근pow연산을 이용해 지수계산을 해 결과를 출력한다.문제해결코드후기지수연산에서 유한소수가 되기위해선 분모가 인수로 2또는 5만 가져야 한다고 한다. 해당문제에선 2를 가지므로 유한소수가 된다

https://www.acmicpc.net/problem/2037문제접근특정 번호에 있는 알파벳에대해 map으로 정리한다.입력받은 문자열을 하나씩 읽어가며 앞서 입력받은 문자열과 같은 value값을 가지는지 확인하고 그렇다면 w시간만큼 기다림, 버튼 누른횟수만

https://www.acmicpc.net/problem/2839 문제 접근 > 이 문제는 동전 거스름돈 문제와 비슷한 양상의 문제이므로 그리디 알고리즘을 사용했다. 그리디 알고리즘 > "매 선택에서 지금 이 순간 최적인 답을 선택하여 적합한 결과를 도출하자"라는

https://www.acmicpc.net/problem/2163 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/2751문제접근수를 전부 입력받고 sort 정렬해 출력한다.문제해결코드후기문제 자체는 쉬웠기에 c++스타일 반복문을 써서 했다.입력을 받는 반복문에 int뒤에 &가 없으면 num의 각 요소가 x에 복사되

https://www.acmicpc.net/problem/10828문제명령접근입력 명령(문자열)에 대한 동작을 정의하고 입력으로 들어오면 해당 동작을 처리한다.문제해결코드후기코드는 제대로 작동하는데 자꾸 한 줄 덜 입력했는데 끝나길래 고민을 좀 했다. 알고 보

https://www.acmicpc.net/problem/2204문제접근입력받은 문자열을 toupper나 tolower로 대문자 혹은 소문자로 정렬한 후 비교하고 사전순으로 빠른, 즉 , 더 작은 문자열을 출력한다.문제해결코드후기toupper나 tolower로
https://www.acmicpc.net/problem/2183 문제 승자규칙 > 1. 만약 x의 현재 점수가 3점이고 다른 선수들이 모두 2점을 넘지 못했으면 x가 그 게임을 이기게 된다. 만약 x의 현재 점수가 4점이면 x가 그 게임을 이기게 된다. 만약 x가
https://www.acmicpc.net/problem/1463 문제 접근 > dp(Dynamic programming)를 사용해서 문제를 해결하면 된다. DP(Dynamic programming) 문제해결 코드 후기 > 처음 문제를 보고 아무 생각도 나지
https://www.acmicpc.net/problem/2160 문제 접근 > 각 그림을 입력받아 표로 생성한 후 가능한 경우를 모두 비교한다. 그 중 차이가 가장 적은 그림을 비교한다. 최종비교 후 출력한다. 문제해결 코드 후기 > 다중 반복문 처리가 복잡

https://www.acmicpc.net/problem/2246문제접근거리와 가격을 쌍으로 입력받아 저장한 후 반복문을 돌려 조건을 검증하는데 조건에 맞지않는다면 다음 반복으로 넘어간다. 조건에 부합하면 cnt값은 누적하고 출력한다.문제해결코드후기단순히 주어

https://www.acmicpc.net/problem/2435문제접근입력 받은 데이터들을 규칙에 맞게 반복하여 각각의 합을 구한다. 각각의 합들을 최대값인지 비교해 갱신하며 답을 출력한다.문제해결코드후기쉽다.

https://www.acmicpc.net/problem/2456문제접근각 후보에 대해 3점, 2점, 1점에 대해서 따로 받은 득표수를 누적한다.득표수를 이용해 먼저 총 점수를 계산해 구하고 동점자여부를 확인한다.동점자여부에 따라 누적했던 각 득표수를 기준으로

https://www.acmicpc.net/problem/2526문제접근벡터에 문제에 주어진연산을 해 나온 값을 인덱스로 하여 반복문을 통해 값을 넣는다. 반복문을 돌다 값이 이미 들어있으면 거기까지의 개수를 구하고 출력한다.문제해결코드후기문제에서 예시가 오류

https://www.acmicpc.net/problem/2546문제접근각 과목의 평균을 구한다.학생이 줄었을 때 평균이 오르려면 평균보다 낮은 점수의 학생이 빠져야하고, 학생이 늘었을 때 평균이 오르려면 평균보다 높은 점수의 학생이 들어와야한다. 이를 조건으

https://www.acmicpc.net/problem/2596문제규칙A - 000000B - 001111C - 010011D - 011100E - 100110F - 101001G - 110101H - 111010접근입력으로 자릿수와 수열이 들어온다. 문자는

https://www.acmicpc.net/problem/11047문제접근그리디 알고리즘을 사용하면 쉽게 할 수 있다.문제해결코드후기브론즈에서 그리디를 사용해 설탕 배달 문제를 풀어봤어서 어렵지 않게 풀었다.

https://www.acmicpc.net/problem/4673문제접근어떤 수가 들어오면 그 수를 매개로 수열이 많들어지기 때문에 재귀를 사용한다.selfnumber함수를 만들어 셀프넘버를 판별해준다.10000까지 순회하며 셀프넘버인 수를 출력한다.문제해결코

https://www.acmicpc.net/problem/2178문제접근이 문제는 경로를 탐색해 최단거리를 구하는 문제이니 BFS를 사용한다. BFS의 대표적인 사용처에 미로탐색이 있다.BFS로 시작점에서 가능한 경로를 모두 탐색하고 해당 경로로 나아갈 때 1
https://www.acmicpc.net/problem/2941 문제 접근 > 비교할 크로아티아 알파벳을 미리 정의 해주고 입력받은 문자열을 substr로 잘라 비교한다. 목록에 존재하면 크로아티아 알파벳의 개수를 누적하고 해당 알파벳의 글자 수 만큼 넘겨 다시
https://www.acmicpc.net/problem/1065 문제 접근 > 1부터 99까지는 한수이므로 N이 100이상일때부터만 생각하면 된다. 100이상의 N이 들어오면 한수를 판별하는 함수에서 자릿수로 쪼개 각각의 차이를 구해 서로 비교한다. 모두 비교한
https://www.acmicpc.net/problem/11399 문제 접근 > 인출하는데 걸리는 시간의 합이 최소가 되려면 각각 걸리는 시간이 최소가 되어야한다. 그러기 위해선 걸리는 시간이 짧은사람부터 빨리빨리 끝내주고 나가야 병목현상이 일어나지 않는다. 입력

https://www.acmicpc.net/problem/1260문제접근DFS(Depth-First-search), BFS(Breadth-First-search)를 각각 구현해 주어진 노드, 간선, 시작점으로 탐색한다.문제해결문제해결(BFS)문제해결(DFS)코

https://www.acmicpc.net/problem/15649문제접근백트래킹을 사용해 문제를 해결한다. 재귀함수를 통해 백트래킹을 구현해 모든 경우를 돌며 해답을 찾으면 종료한다.백트래킹문제해결코드후기재귀를 잘 다뤄본적이 없어서 처음에 stack으로 해보

https://www.acmicpc.net/problem/1018 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/1920 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/11650문제접근sort()함수를 사용하여 정렬하는데 세번째 파라미터를 정의해 문제에서 주어진 기준을 구현한다. x좌표순으로 정렬하는데 같을경우 y좌표를 기준으로 정렬한다.문제해결코드후기전에 브론즈단계에

https://www.acmicpc.net/problem/10773문제접근"0을 외치면 가장 최근의 수를 지운다" 라는 말은 스택의 구조라는걸 유추할 수 있다. 따라서 입력으로 수를 받는데 0이 들어오면 pop 아니면 push해준뒤 스택에 담긴 수의 합을 구한

https://www.acmicpc.net/problem/1003문제접근피보나치 수열은 DP를 사용하여 구현하는 문제다. DP를 사용하여 문제의 코드를 이용하면 된다.문제해결코드후기DP로 각 N에대해 채우는건 쉬웠지만 출력문에서 좀 고민 했다.

https://www.acmicpc.net/problem/9095문제접근N을 1, 2, 3의 합으로 나타내야하므로 DP를 사용해 DP(1), DP(2), DP(3)을 구해 계산하면 된다. 문제해결코드후기언제나 DP는 규칙을 찾는게 가장 까다롭다. 규칙만 찾으면
https://www.acmicpc.net/problem/1929 문제 접근 > 소수 관련 문제는 에라토스테네스의 체를 이용한다. 에라토스테네스 체를 이용해서 소수를 구하고 범위가 주어지면 해당 범위 내의 소수를 출력한다. 문제해결 코드 후기 > 브론즈에서 에
https://www.acmicpc.net/problem/2606 문제 접근 > 문제의 흐름을 보면 DFS와 BFS를 쓰는 그래프 탐색 문제를 적용하는 문제이다. 컴퓨터들은 노드고 네트워크는 간선이다. 이를 구현해 탐색해 연결된 컴퓨터의 수를 구한다. 문제해결
https://www.acmicpc.net/problem/10814 문제 접근 > 나이와, 이름이 주어졌으므로 map으로 묶어서 회원을 저장하고 나이에 대해선 오름차순, 같다면 가입한 순서로 정렬한다. 문제해결 코드 후기 > 처음에 map을 써서 인덱스를 ke
https://www.acmicpc.net/problem/2579 문제 접근 > DP를 사용해 계단을 오를 수 있는 경우를 쪼개 낮은 층 수 부터 얻을 수 있는 최대 점수를 계산하며 계단을 올라 점수를 누적하고 출력한다. 문제해결 코드 후기 > DP는 규칙찾는

https://www.acmicpc.net/problem/15650문제접근백트래킹을 사용해 재귀로 수열을 조합하여 조건을 만족하면 출력하고, 아니면 다시 탐색한다.문제해결코드후기visited 값을 false로 바꾸지 않고 했을 때 앞서 1,2,3이 나왔다면 뒤
https://www.acmicpc.net/problem/1427 문제 접근 > 수를 입력받고 이 수를 각 자리수별로 쪼갠뒤 이들을 내림차순으로 정렬해 다시 출력한다. 문제해결 코드 후기 > 자릿수에 대해 수를 그 자릿수의 길이만큼 반복하며 나눠서 가져와 정렬

https://www.acmicpc.net/problem/11726문제접근DP를 사용해서 직사각형을 채우는 방법의 규칙을 찾아 크기가 커졌을 때의 경우의수를 구한다.문제해결코드후기규칙을 다 구하고 제출했는데 틀려서 식에 뭔가 예외가 있나 계속 그렸는데 문제가

https://www.acmicpc.net/problem/11724문제접근점과 간선을 입력받고 이를 통해 그래프를 만들어 낸 뒤 그래프 탐색 알고리즘으로 각 점에 대해 그래프를 탐색한다.모든 점에 탐색을 하는데 한 탐색이 끝날 때 마다 수를 누적시키면 몇개의

https://www.acmicpc.net/problem/2667문제접근사방탐색과 그래프 탐색(DFS, BFS)를 이용해서 집이 있는곳을 탐색해서 수를 누적해 단지의 수와 집의 수를 구한다.문제해결코드후기사방탐색에 대한 문제가 두번째라 익숙하지 않아 좀 헤맸다

https://www.acmicpc.net/problem/1012문제접근배추가 있는 곳의 좌표를 잡고 사방탐색을 하여 주변에 배추가 존재하면 그래프 탐색(BFS, DFS)를 이용해 주번에 배추를 계속 탐색한다. 없다면 다음 배추가 있는 곳으로 가며 반복한다.문

https://www.acmicpc.net/problem/1436 문제 접근 > 문제해결 코드 후기 >
https://www.acmicpc.net/problem/10845 문제 접근 > 큐를 이용해 문제에 주어진 명령을 구현한다. 문제해결 코드 후기 > 예전에 스택으로 한번 했던건데 이번엔 해당 동작을 함수로 정의하고 했다. main문이 더 깔끔해졌다. 하지만
https://www.acmicpc.net/problem/1149 문제 접근 > DP를 사용해 집의 수가 적을 때 최소의 비용으로 칠하는 규칙을 구하고 집이 많아졌을 때를 이를 통해 구해낸다. 위 규칙을 보면 1번 2번은 다른 색이어야 한다, N번과 N-1은 다른색
https://www.acmicpc.net/problem/1697 문제 접근 > 그래프 탐색중 너비우선탐색(BFS)를 이용해 수빈이가 갈 수 있는 x에 대해 탐색을 한다. 탐색을 하며 이동할 때마다 1초씩 누적하며 최종 K에 도달했을 때 누적된 초를 출력한다. 문
https://www.acmicpc.net/problem/11651문제접근좌표로 주어지기 때문에 Pair을 사용해 점을 정의해주고 정렬 기준을 세워 sort해준다.문제해결코드후기stable_sort를 전에 해본적이 있어서 연습할겸stable_sort를 사용해

https://www.acmicpc.net/problem/7568문제접근몸무게와 키를 pair로 받고 모든 사람을 각각 비교해 몸무게와 키가 모두 크면 등수를 올려준다.문제해결코드후기브루트포스가 무겁고 무식해서 쓰기 싫어 이런저런 방법을 해봤다. 몸무게, 키별

https://www.acmicpc.net/problem/11286문제접근우선순위 큐를 사용하여 조건의 연산을 구현한다.문제해결코드후기우선 순위 큐를 처음 다뤄봤다. 생각보다 까다롭다.서번째 인자인 cmp는 sort와 다르게 "타입"이기 때문에 함수가 올 수

https://www.acmicpc.net/problem/17070 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/10816문제접근이진탐색을 사용하여 찾고자하는 수의 개수를 구한다.이진탐색의 lower_bound, upper_bound를 사용한다.문제해결코드후기처음에 탐색알고리즘을 써서 하려다 그냥 벡터에서 특정원소

https://www.acmicpc.net/problem/1931문제접근빨리 끝날 수 있는 회의 부터 쳐내야 많은 수의 회의를 할 수 있기 때문에 끝나는 시간으로 정렬을 한 뒤 회의를 배치한다.문제해결코드후기문제를 잡고 한참을 생각해도 생각이 나지 않았다. 문

https://www.acmicpc.net/problem/25501문제접근먼저 재귀부분인 recursion함수부터 구현을 한다.1\. 호출횟수의 누적 일단 문제에서 재귀가 호출된 횟수를 누적시켜야한다고 했으므로 recursion함수가 실행되자마자 cnt를 누적

https://www.acmicpc.net/problem/17478문제접근재귀를 사용해 문자열을 반복해 출력한다.문제해결코드후기문자열이 처리가 복잡해서 재귀도 헷갈렸다. 복잡했다.특정 문자를 반복하는 방법으로 string(반복횟수, 반복할 문자)를 새로 알게됐

https://www.acmicpc.net/problem/10994문제접근예제를 보면 1일 때 별 하나가 찍혀있다.2일 땐 1일때의 별 하나의 주위를 감싸는데 한 칸 띄고 둘러쌓고있다.3일떄도 마찬가지로 1의 별을 한칸 띄고 둘러싸고, 그 걸 다시 한칸 띄고

https://www.acmicpc.net/problem/2304문제접근문제의 그림을 보면 넓이를 구하기 위해선 가장 높은 기둥을 기준으로 왼쪽과 오른쪽으로 나누어서 두 면적을 더하고 가장 높은 기둥의 넓이를 더해주면 된다.그리고 가장 왼쪽과 가장 오른쪽의 기

https://www.acmicpc.net/problem/2563문제접근입력으로 받는 두 자연수, 색종이의 왼쪽 변과 도화지의 왼쪽 변사이의 거리, 색종이의 아래변과 도화지의 아래변의 거리를 따져보면 시작점이라고 할 수 있다. 이 점을 시작으로 세로, 가로로

https://www.acmicpc.net/problem/1874문제접근문제가 입력으로 주어진 N개의 수들이 수열이고 이를 1부터 n까지 스택에 넣었다 뻈다를 적절히 써서 그 수열을 만들으라는 문제다. 이해가 좀 어려웠다.일단 큐가 비었거나 수열의 첫번째 수보

https://www.acmicpc.net/problem/2447문제접근nxn 짜리 색종이가 주어졌을 때, 현 크기를 9등분 한 후 가운데 종이를전부 구멍을 뚫고, 나머지 종이들을 각각 다시 9등분하고 가운데 종이를전부 구멍뚫고를 나눈 종이가 3x3짜리 종이가

https://www.acmicpc.net/problem/2436문제접근문제에서 최대공약수(A)와 최소공배수(B)를 줬으니 유클리드 호제법의 몇가지 개념을 생각할 수 있다.최대 공약수는 gcd(i, j)이고 최소 공배수는 ixj를 최대공약수로 나눈 수이다. 즉

https://www.acmicpc.net/problem/11866문제접근각 단계에서 제거할 사람을 정하기 위해 예제로 주어진 7,3을 통해 쭉 나열해보면 아래와 같다.1) 3 -> 2번 인덱스2) 6 -> 4번 인덱스3) 2 -> 1번 인덱스4) 7 -> 3

https://www.acmicpc.net/problem/11053문제접근dp를 사용해 수열의 크기별로 가능한 최대길이 수열 중 최대값을 구하고 최종적으로 n개의 각각의 dp중 제일 큰값을 고른다.dp1은 첫번째 수를 마지막 수로 하여 구할 수 있는 수열들 중

https://www.acmicpc.net/problem/10815문제접근이분탐색을 사용해서 찾으려는 수를 상근이가 가진 수들의 인덱스를 통해 탐색한다.상근이가 가진 수를 오름차순으로 정렬을 먼저하고최초로 0, 상근이가 가진 카드의 수 -1(인덱스로할거라),

https://www.acmicpc.net/problem/1072문제접근이분탐색을 통해 승률이 변화가능한 게임수를 탐색한다.left right의 범위를 게임수의 최소, 최대 값으로 주고 이분탐색을 한다.중간값을 구해서 그 값을 게임수로 새로 승률을 계산했을 때

https://www.acmicpc.net/problem/7795문제접근이분탐색을 사용할건데 이분탐색엔 lower_bound라는 함수를 사용해주면 된다. 찾으려는 값 이상의 값이 처음 나오는 인덱스를 반환해주기 때문에 이를 역으로 이용하면 그 인덱스 보다 작은

https://www.acmicpc.net/problem/11659문제접근구간합 구하는 문제는 누적합을 사용한다.누적합을 구하기 위한 전체 수열, 배열을 입력받으면서 동시에 현재 입력받은 곧까지의 합도 같이 구한다.입력이 끝나면 이를 기반으로 구간합을 구할 때

https://www.acmicpc.net/problem/9461문제접근규칙을 구해보면 p(1)과 p(2)를 더하면 p(4)가 나온다. 1+1 = 2, p(2)와 p(3)를 더하면 p(5)가 나온다. 1+1 = 2 p(3)와 p(4)를 더하면 p(6)이 나온다

https://www.acmicpc.net/problem/1932 문제 접근 > dp를 사용해서 각 수까지 왔을 때의 값을 각각 구해준다. 마지막 줄엔 해당 수까지 왔을 때 최종 값이 있을건데 그 값중 제일 큰 값을 정답으로 가지면 된다. 삼각형에서 왼쪽 끝에있는

https://www.acmicpc.net/problem/2805문제접근나무의 크기, 가져가야하는 범위가 억단위가 넘어가므로 오버플로우 방지를 위해 longlong형으로 변수들을 사용한다.나무의 크기가 최대 10억 까진데 절단기에 사용할 수 있는 높이는 양의정

https://www.acmicpc.net/problem/1541문제접근식에 괄호를 임의로 넣어 값을 최소로 만들기 위해선 빼기연산을 제일 많이 했을 때 최소 값을 가질 수 있다.그래서 뺴기연산인 -문자가 나온곳 부터 다시 -가 나올때 아니면 문자열이 끝날때

https://www.acmicpc.net/problem/3079문제접근이분 탐색으로 걸리는 시간을 기준으로 잡아 해당 시간동안 M명의 인원수를 전부 심사할 수 있는지, 없는지로 다음의 탐색범위를 설정해 재귀해준다.예를 들어 60초 안에는 10초, 7초 심사대

https://www.acmicpc.net/problem/1912문제접근입력받은 수열에 대해서 현재 수열까지의 합이 큰지, 현재 수 부터 시작하는게 더 큰지를 따져서 둘 중 큰 값을 dp값으로 갖는다.이 방식으로 각각에 대해 dp값이 나오면 모든 dp값중 가장

https://www.acmicpc.net/problem/1654문제접근K개의 랜선의 길이가 주어질 때, 이 랜선들을 각각 x의 길이로 자르면(나누면) 나머지 버리고 y등분이 된다.이 각각의 y등분을 다 더했을 때, N보다 크거나 같으면 원하는 결과를 얻었으니

https://www.acmicpc.net/problem/1927문제접근우선순위 큐를 사용해 큐에 수를 넣음과 동시에 최소값으로 정렬한다.우선순위 큐의 세번째 인자를 정의해준다. sort와 다르게 이는 구조체나 클래스가 와야하므로 struct로 선언해주고이 객

https://www.acmicpc.net/problem/11279문제접근우선 순위 큐를 사용하고 최대 힙이므로 정렬 기준을 조건이 참일 때 등호의 왼쪽에 있는 값이 우선순위가 낮은게 되므로 a < b를 return 해주도록 한다.아니면 최소 힙은 우선순

https://www.acmicpc.net/problem/2156문제접근연속 세잔을 마실 수 없기 때문에 규칙은 총 세가지로 볼 수 있다.먼저 현재 잔을 마시지 않는경우다. 이는 연속 세잔에 걸리지 않으므로 앞에서 어떻게 마셨던 상관 없어서 dp(i-1)의 값

https://www.acmicpc.net/problem/18870문제접근벡터를 입력받고 똑같은 벡터를 하나 더 복제해준 뒤이 벡터를 오름차순 정렬해주고 중복을 제거해준다.이제 lower_bound를 사용해서 원래 벡터의 인덱스 순서대로 복제&중복제거된 벡터에

https://www.acmicpc.net/problem/10844문제접근dp를 이차원 벡터로 선언해 자릿수, 올 수있는 수의 조합으로 만든다.예를 들어 N이 4라고 하면 첫자리엔 0이 올수 없으므로 일단 dp(1)(?)에 대해 ?엔 1부터 9까지 올 수 있다

https://www.acmicpc.net/problem/4948문제접근테스트 케이스로 여러 범위에 대해 소수를 구해야하므로미리 에라토스테네스의 체를 이용해 문제에서 주어진 최대 범위 까지의 소수를 모두 구한다.1부터 123456까지인데 입력받은 n과 2n까지

https://www.acmicpc.net/problem/14888문제접근재귀로 DFS를 구현해 백트래킹으로 풀어낸다.재귀를 돌며 연산의 가능한 모든 경우가 따져진다.N이 3일 때를 예로들어보면 처음에 dfs(1, 3)이 들어간다.op(0), 덧셈계산이 1개

https://www.acmicpc.net/problem/11725문제접근DFS로 깊이우선 탐색을 사용해서 입력받은 트리를 탐색한다.DFS의 구조에서 현재 스택에 대해 자식 노드를 추가해주는 부분이 있다.여기서 자식을 넣으면서 동시에 부모 자식 관계를 담을 r

https://www.acmicpc.net/problem/1991문제접근입력으로 노드의 자식 관계가 주어지는데 이걸 각 노드를 인덱스로 자식을 (노드)(0), (노드)(1)로 이차원 벡터에 저장한다.. 이면 벡터의 초기값으로 공백을 주어 그대로 공백이 남게 한

https://www.acmicpc.net/problem/14889문제접근해야할 기능은 3가지다.1\. 팀뽑기2\. 팀원에 따라 점수 계산(뒤집어서도)3\. 나온 점수를 각각의 경우마다 min연산으로 비교누적팀뽑기는 0부터 입력받은 N까지 한명 뽑고 재귀로 동

https://www.acmicpc.net/problem/11660문제접근누적합을 사용한다. NxN의 표를 입력받으면서 동시에 해당 좌표까지의 누적합을 계산해서 벡터에 저장한다. 예를들어 2,2는 (2,1까지의 합) + (1,2까지의 합) + 2,2좌표 - 1

https://www.acmicpc.net/problem/1629문제접근A,B,C가 최대 2,147,483,647이므로 최악의 경우만 봐도 계산이 매우 크다는걸 알 수 있다.따라서 분할 정복을 이용해 재귀로 계산을 작은거부터해서 올라와 준다.어떤 수의 곱에 대

https://www.acmicpc.net/problem/2630문제접근많은 색종이중 첫번째 0,0번째꺼를 기준으로 잡고 이중반복으로 돌며 기준과 다른 색인 색종이가 나오면 반복문을 바로 종료하고 문제에 주어진대로 가로세로 이등분 총 4등분을 내준다.4등 분을

https://www.acmicpc.net/problem/1182문제접근부분수열이 뭔지 검색해봤다. 예를 들어 수열이 1,3,5가 있다면 1,3, 1,5 3,5 1,3,5가 있지만 3,1 5,3 등 반대로는 안되는 수열로 이해했다.그럼 반복문으로 각 자리에 올

https://www.acmicpc.net/problem/10799문제접근문제에 주어진 예제들을 보면서 무슨 규칙으로 출력값이 나오는지 연구를 계속 해봤다. 결론은 이렇다.스택을 사용했고 (가 들어오면 push )가 들어오면 pop근데 )가 들어올 때마다 조각

https://www.acmicpc.net/problem/4963문제접근그래프 탐색을 이용해 섬을 탐색해 어디까지가 이어진 한 덩어리의 섬인지 찾는다.찾는 방식은 8방 탐색으로 대각선까지 찾는다.입력으로 섬은 1 바다는 0으로 들어오기 때문에 부울 형으로 지도

https://www.acmicpc.net/problem/7562문제접근그래프 탐색을 이용해 나이트가 이동할 수 있는 경로를 다 따져서 이동 할 때마다 횟수를 누적해 이 중에서 제일 작은 수를 출력한다.나이트가 가능한 경로는 8가지이므로 이것도 8방 탐색이지만

https://www.acmicpc.net/problem/1406문제접근연결리스트를 사용해 구현해준다. 문제의 커서는 iterator형으로 리스트의 인덱스로 사용한다.문제에 주어진 입력별 연산을 구현해주며 각각의 조건들을 유의한다.B에대해서는 커서가 움직이는것

https://www.acmicpc.net/problem/9465문제접근DP를 사용하여 해결한다.기준 점을 스티커 배열의 0,0 과 1,0으로 잡는다.그래서 각각 dp(0,0)과 dp(1,0)은 자신의 점수이다.스티커 0,1과 1,1은 각각 사방에 있지않은 대

https://www.acmicpc.net/problem/2002문제접근터널에 들어온 차들의 번호를 Key값으로 string,int형 map에 value값으로 터널에 들어온 순서를 저장한다.터널에서 나올 땐 터널에 나온 순서대로 벡터에 차의 번호에 맞는 val

https://www.acmicpc.net/problem/17298문제접근문제를 요약해보면 오큰수는 수열의 각각의 수에 대해서 오른쪽에 있는 수 중에서 가장 먼저 나오는 본인보다 큰 수이다.그래서 일단 스택에 나 자신을 넣고 수열을 돌며 나보다 큰 수가 나오면

https://www.acmicpc.net/problem/10026문제접근그래프 탐색이론을 사용하여 해결한다.적록색약이 아닐 때, 색약일 때로 나눠야 하기 때문에 각각에 대해 따져줘야한다.그래서 탐색 메소드에 색약 여부를 판단하기위한 부울값을 하나 인자로 받아

https://www.acmicpc.net/problem/6603문제접근백트래킹을 사용해 재귀로 집합 S에 있는 수 중 6개를 뽑아내 중복되는 수 없이 수열을 만들어낸다.재귀 함수인 Lotto에 인자로 인덱스인 idx와 뽑은 수의 개수, 결과 수열의 자릿수(혹

https://www.acmicpc.net/problem/1699문제접근DP를 사용해서 작은 수들의 항의 개수를 이용해 큰수를 구한다.dp(i)를 각 i에 대해 가능한 최소의 항이라고 하면 일단 최악의 경우의 수는 전부 1의 제곱을 나타냈을 때이다.1부터 3까

https://www.acmicpc.net/problem/9020문제접근n이 최대 10000까지 가능하므로 에라토스테네스의 체로 미리 10000까지의 소수를 구한다.2부터 10000의 제곱수 까지 각각의 배수들을 각각의 제곱인 수부터 시작한다. 2의 배수는 2

https://www.acmicpc.net/problem/15652문제접근재귀를 사용하여 각 자리수마다 가능한 수를 넣어 주고 수열의 길이가 입력으로 받은 M에 만족한다면 저장된 수열을 출력해주고 가능한 다음 수열을 탐색한다.문제에서 비내림차순이라고 했기 때문

https://www.acmicpc.net/problem/2644문제접근입력으로 받은 가족 수, 가족들의 관계를 입력받고 이차원 벡터에 구성원의 번호별로 누구와 관계를 이루고있는지 그래프를 만든다.그래프 탐색을 이용해 촌수를 알아야 하는 번호를 시작으로 관계들

https://www.acmicpc.net/problem/1684문제접근문제가 주어진 n개의 정수를 한 정수 D로 나누었을 때 나머지가 모두 같아지는 경우가 있다고 한다.이 경우를 예제에 주어진 수들로 문제의 식으로 정리해보면R = 701 - Q1xDR = 1

https://www.acmicpc.net/problem/1992문제접근색종이 나누기 문제와 비슷한 방식으로 접근한다.재귀를 통해 분할정복을 한다.Quad메소드에서 시작으로 들어온 행, 열 값을 통해 그 위치에 있는 1또는 0을 잡고 입력으로 들어온 범위의 배

https://www.acmicpc.net/problem/7576문제접근그래프 탐색, 사방탐색을 이용헌다.토마토의 보관 상태를 입력받으면서 상태가 1인, 즉 토마토가 들어있는 좌표를 모두 저장한다.그래프 탐색의 시작 큐에 해당 위치를 모두 넣고 시작한다.그럼

https://www.acmicpc.net/problem/12865문제접근dp를 사용해서 물건을 입력받을 때마다 그 물건으로 조합 할 수 있는 모든 dp값을 다 갱신해준다.예를 들어 예제의 6,13이 들어오면먼저 목표무게인 K=7를 만들기 위해dp(7)과 dp

https://www.acmicpc.net/problem/11403문제접근입력으로 주어진 행렬은 쉽게 생각해 인덱스가 1부터 시작해서 각각 1이 있는 좌표는 행, 열이 그래프의 경로 행점에서 열 점까지 간선이이어져 있다는 뜻이다.즉, 예제 1로 보면 1,2 2

https://www.acmicpc.net/problem/11729문제접근재귀로 풀어야 하기 때문에 크게 생각해보면 원판이 몇개가 있던 일단 젤 큰 원판 빼고 모든 원판을 2번 기둥에 옮기고 젤 큰 원판을 3번 기둥에 옮긴 뒤 다시 2번 기둥에 있는 원판들을

https://www.acmicpc.net/problem/11052문제접근dp를 사용한다.N장을 뽑으려고 할 때 돈을 젤 많이 쓸 때를 dp(N)이라고 하면 일단 dp값의 초기로 각각 N장 들어있는 카드팩을 살 때로 잡는다.이는 N이 3일 때, 3장팩, 2+1

https://www.acmicpc.net/problem/2583문제접근영역을 탐색하는건 그래프 탐색을 이용하면 간단하고 입력으로 들어온 직사각형의 두 x,y와 좌표를 변환하는게 관건이다.내가 생각한 방법으로는 좌하단 좌표로 들어온 첫 좌표는 x와 y를 바꾼다

https://www.acmicpc.net/problem/1197문제접근이 문제는 MST라고 하는 최소 스패닝 트리를 구현하는 문제이다.푸는 방법은 두 가지가 있다고 한다.하나는 prim을 사용하는 것과 하나는 kruskal알고리즘을 사용하는 것이다.먼저 kr

https://www.acmicpc.net/problem/16953 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/1043문제접근분리집합을 사용하여 Union, Find로 파티원들을 집합화 한다.먼저 각 사람마다 parent로 꼬리표를 각 번호에 맞게 준다.이제 피티를 입력받으며 피티구성원의 처음으로 들어온 구성원의

https://www.acmicpc.net/problem/11057문제접근dp를 이차원 벡터로 선언하고 행을 자릿수, 열을 그 수로 끝나는 수라고 잡고 표를 그려보면 아래와같다.1자리수 일 땐 끝에 뭐가오던 1가지씩 가능하므로 전부 1이고자릿수 상관없이 0으로

https://www.acmicpc.net/problem/11055문제접근dp를 사용하는데 여기서 dp(i)는 수열의 i번째 수 까지의 증가하는 부분수열의 최대값 이다.즉 문제를 예시로 하면 dp(1)은 1까지 하는 최대값인 1이고dp(2)는 100까지로 하는

https://www.acmicpc.net/problem/1717문제접근Union과 Find를 사용한다.Find는 들어온 변수에 대해 이 변수의 parent값이 변수와 같다면 초기에 주어진 뿌리값이랑 같으므로 그대로 반환하고다르다면 어딘가의 집합에 속해있다는

https://www.acmicpc.net/problem/1647문제접근prim을 사용해서 최소스패닝트리를 구현해 푼다.일단 마을을 최소의 비용으로 전부 이어준다. 그러면 불필요한 도로 싹다 사라지고 딱 필요한 최소비용으로 이루어진 도로만 남는다.그렇게 도로를
https://www.acmicpc.net/problem/11559 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/2636문제접근그래프 탐색을 이용하고 해줘야할 기능은 3가지가 있다.1\. 구멍 찾기전체를 돌며 입력이 0인 각 덩어리들을 보는데 덩어리 중 하나라도 틀의 가장자리인 (0, y), (N-1, y), (x

https://www.acmicpc.net/problem/9663문제접근일차원벡터를 만들어 체스판의 행을 나타낸다고 정의해준다.그럼 각 인덱스는 행 번호를 말하고, 인덱스의 값은 열을 말한다.퀸은 체스에서 8방향으로 이동할 수 있다. 따라서 어떤 퀸을 배치하면

https://www.acmicpc.net/problem/1389문제접근입력받은 친구들의 관계로 연결 관계를 이차원벡터로 만든다.너비우선 탐색을 이용하여 각 번호의 사람마다 탐색을 하여 한 관계를 볼 때마다 1씩 거리를 누적하고 방문처리를 하며 모두 방문처리가

https://www.acmicpc.net/problem/1753문제접근입력으로 들어오는 정점들의 관계를 통해 관계도를 방향을 생각해서 만들어주고 Graph 메소드에서 우선순위 큐를 만들어 시작 가중치(0)과, 시작 정점을 넣고 시작한다.그럼 시작정점에서 갈

https://www.acmicpc.net/problem/7569문제접근3차원벡터를 사용해 토마토의 좌표를 저장하면서 안익은토마토가 있는지 본다. 없다면 바로 0을 출력하고 끝내고 있다면 익은 토마토들의 좌표만 따로 잡아 큐에 넣어둔다.while문으로 돌며 큐

https://www.acmicpc.net/problem/5430문제접근정수배열이라고 주어진 문자열을 입력받는다. 하지만 필요한건 대괄호와 콤마를 뺀 숫자들이므로 이를 조건문으로 파싱해 숫자만 뽑아내준다.뽑아낸 숫자(문자열형)로 이루어진 디큐를 가지고 명령어를

https://www.acmicpc.net/problem/2206 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/1759 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/14503문제접근브루트포스와 DFS를 통해 주어진 각각의 좌표에서 가능한 모든 경우를 따져준다.추가로 ㅗ,ㅜ,ㅓ,ㅏ모양은 DFS로 중간에 꺾일 수 없기 때문에 따로 빼서 검사한다.총 4개의 블럭을 쓰기

https://www.acmicpc.net/problem/14503 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/1916문제접근다익스트라를 사용하여 도시까지의 최소비용을 구한다. 우선순위 큐로 주어진 비용 0, 주어진시작점으로 큐에 넣고 시작하여 다음 가능한 경로를 가져온다. 가능한 경로 까지의 비용을 계산해 큐에

https://www.acmicpc.net/problem/1987문제접근너비우선탐색을 하는데 백트래킹을 사용하여 탐색한다.사방 탐색을 하여 새로 탐색할 곳이 범위 내라면 해당 좌표의 알파벳을 숫자로 변환해 이를 인덱스로 가지는 부울형 방문처리벡터에 검증을 해

https://www.acmicpc.net/problem/2439문제접근첫 반복문으로 N까지 돌며 각 줄에 대해 출력한다.내부에서의 첫번째 반복문으로 N-1, N-2..0순서로 공백을 출력하고 뒤에 다음 반복문으로 1..2..3...N순으로 별을 붙인다.문제해

https://www.acmicpc.net/problem/2588문제접근두 수를 입력받는다. 두번째로 입력받은 수가 세자리니까 총 3번 반복하며 일의 자리부터 분리한다.나머지연산으로 10을 나눈 나머지를 저장하고 두번째 수를 10으로 나누기연산해서 갱신해놓는다

https://www.acmicpc.net/problem/1271문제접근가능한 n과 M의 최대 범위가 10의 1000승까지이므로 약 10의 9승, 약 10의 18승 정도밖에 담지 못하는 정수형변수로는 할 수 없다. 그래서 큰 수를 다룰 수 있는 BigInteg

https://www.acmicpc.net/problem/2884문제접근입력된 시간에서 45분을 빼면 되는데 뻈을 때 음수가 되는(한 시간 전으로 돌아가는)상황이면 60분을 더해주면 된다. 예를 들어 3시 25분에서 45분 전으로 돌아가면 2시 40분이 된다.

https://www.acmicpc.net/problem/2562문제접근최대값을 저장할 변수 Max를 선언하고 9개의 숫자가 자연수이므로 초기값으로 0을 준다.반복문을 통해 수를 9개 입력받는다. 받으면서 그 숫자와 Max의 숫자를 비교해 입력된 숫자가 더 크

https://www.acmicpc.net/problem/10818문제접근N을 입력받고 입력받은 N번만큼 반복문을 돌며 수를 입력받는다. 입력받음과 동시에 미리 정한 최대, 최소값과 이 수를 비교해 최대,최소값을 갱신해준다. 반복이 끝나면 저장된 최소, 최대값

https://www.acmicpc.net/problem/1834문제접근백트래킹을 이용하여 가능한 모든 수를 만든다.0부터 시작해서 9까지 보는데 한자리수 일땐 0부터 9까지 모두 가능하고 두 자리 수 일땐, 10, 20, 21, 30, 31, 32, 40,4

https://www.acmicpc.net/problem/3052문제접근10개의 수에 대해서 각각의 나머지가 나올 것이다. 이 나머지 10개를 전부 모아놓고 몇개의 종류(각각 다른 수)인지 따져야하므로 중복은 제거하고 순수 종류만 따져야한다. 이럴 땐 map을

https://www.acmicpc.net/problem/1152문제접근StringTokenizer는 입력을 공백 기준으로 분리해서 토큰으로 저장한다. 이를 사용하면 공백은 제거되고 단어들만 남는다.문제해결코드후기while문의 조건으로 st.nextToken(

https://www.acmicpc.net/problem/12913 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/2525문제접근시작시간의 분에 걸리는 시간을 더한 뒤 60으로 나눈 몫을 시에 추가하고 60으로 나눈 나머지를 분으로 가지면 된다. 이때 시가 24를 넘어가는 경우를 고려해 24보다 크거나 같다면 24를

https://www.acmicpc.net/problem/10809문제접근일단 알파벳의 개수가 26개이므로 정수형 배열을 크기 26으로 초기값 -1을 준 상태로 선언해준다.문자열인 단어 S를 입력받고 S의 각각의 문자에 대해 접근해서 이를 정수로 변환해 인덱스

https://www.acmicpc.net/problem/1826문제접근그리디를 사용하여 갈 수 있는 주유소 중에서 기름을 더 많이 주는 주유소를 매번 고른다. 예제를 예를들어 보면 초기에 10주어졌고 이를 통해 갈 수 있는 주유소는 (4,4)와 (5,2)이다

https://www.acmicpc.net/problem/2908문제접근두 수를 입력을 받은 뒤 문자열로 처리하면서 인덱스를 역순으로 반복하여 뒤집는다. 이제 두 수를 max연산으로 더 큰 수를 골라낸다.문제해결코드후기뭔가 뒤집는 부분이 맘에 안들었다. c++

https://www.acmicpc.net/problem/2577문제접근입력으로 들어오는 수 A,B,C를 받아 세 수의 곱을 먼저 구한다. 구하고 난 뒤 이를 문자열로 변환하여 각 자리수에 접근해 이 수를 배열의 인덱스로 하여 값에 1씩 추가해준다. 반복이 끝

https://www.acmicpc.net/problem/28437문제접근만들어야할 막대의 길이가 최대 100,000이다. 이 길이를 만들려면 최소 1짜리 막대에 대해 100,000배 했을 때, 2짜리를 50,000배, 4 짜리 25,000배...이런식으로 간

https://www.acmicpc.net/problem/1978문제접근주어진 수에 대해 2부터 시작하는 어떤 수로 계속 나누는데 이 어떤 수의 제곱이 주어진 수보다 작거나 같을 때 까지만 나누어본다. 이는 쉽게 말해 약수를 구하는 과정이라고 할 수 있다. 6

https://www.acmicpc.net/problem/8958문제접근입력받은 OX퀴즈 결과를 하나씩 읽어가며 X가 나올 때까진 부분점수를 1점씩 누적하며 매번 최종 점수에 누적한다. 만약 X가 나오면 부분점수를 0으로 초기화한다. 문제해결코드후기자바에선 w

https://www.acmicpc.net/problem/1933 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/2750문제접근문제 그대로 N을 입력받고 입력받은 N개의 수들을 sort로 정렬한다.문제해결코드후기그냥 sort()열어봤는데 아무것도 안나왔다. 그래서 전에 배열의 초기값을 채워줄 때 Arrays로 시작

https://www.acmicpc.net/problem/2798문제접근N장의 카드에서 임의로 3장을 뽑는다에서 백트래킹을 사용하였다. 카드를 뽑는 부분을 재귀함수로 정의했고 재귀의 탈출 부에서 M과 비교하여 M보다 작은 결과중 max연산을 통해 더 가장 큰

https://www.acmicpc.net/problem/1316문제접근모든 알파벳에 대해 각 알파벳을 인덱스로 가지는 boolean형 배열을 초기값은 false로 만든다. 또 입력받은 문자열을 순회하며 각 자리의 문자를 문자형 변수에 저장해둔다. 초기는 빈값

https://www.acmicpc.net/problem/2751문제접근수를 입력받아 배열에 저장 한 뒤 sort를 사용하여 정렬해 출력한다.문제해결코드후기브론즈 급인거같은데..

https://www.acmicpc.net/problem/2869문제접근달팽이가 정상에 도달하면 더 이상 미끄러지지 않는다. 이말은 즉, 오를 수 있는 경우인 낮에 정상에 오르고 끝난다는것이다. 낮, 밤 오르락 내리락 하다가 결국 +1일차인 다음날 낮에 정상에

https://www.acmicpc.net/problem/4344문제접근매 테스트 케이스마다 주어진 N명을 크기로 하는 배열을 만들어 점수를 저장하며 이 점수들을 전부 누적해 N을 나눠 동시에 평균까지 구해버린다.이제 배열을 순환하며 평균보다 낮은 학생의 수를

https://www.acmicpc.net/problem/2252문제접근이 문제는 방향이 있는 그래프 문제를 푼다고 생각하고 접근한다. 그리고 "위상 정렬" 문제 라고한다.입력으로 주어지는 학생의 키 우선도에 따라 방향 그래프에 관계를 저장하듯 저장해주고 동시

https://www.acmicpc.net/problem/2292문제접근1을 기준을 1겹이라고 하자, 그럼 2~7까지 6개는 2겹, 8~19까지 12개는 3겹, 20~37까지 18개는 4겹, 38~61까지 24개는 5겹이 된다. 이때 각 겹은 1, 6, 12,

https://www.acmicpc.net/problem/5622문제접근다이얼에 써있는 알파벳 별로 어떤 숫자와 매칭되는지 정의 해준다. 그리고 걸리는 시간은 핀에 닿아야 하므로 2일 땐, 2-> 1-> 빈칸 -> 빈칸 으로 총 3초가 걸리고, 5일 땐, 5-

https://www.acmicpc.net/problem/10989문제접근Arrays.sort를 사용하여 정렬한다.카운팅 정렬을 사용한다.문제해결코드 - 1코드 - 2후기메모리에 대해 깊게 생각해 볼 수 있는 좋은 문제였다. 뭔가 뾰족한 방법이 생각안나고 관성

https://www.acmicpc.net/problem/2609문제접근유클리드 호제법을 사용하여 두 수의 최대 공약수를 먼저 구하고 두 수의 곱을 최대 공약수로 나눈 값이 최소 공배수이기 떄문에 이를 계산해 구해준다.문제해결코드후기지금 까지 유클리드 호제법을

https://www.acmicpc.net/problem/1712문제접근노트북 한대를 만드는데 드는 비용은 A + B x 1 이고, 판매가격은 C x 1이다. 그럼 n대를 생산할 땐 A + B x n, C x n이 된다.이 떄 이떄, 이득이 되려면 C x n이

https://www.acmicpc.net/problem/11653문제접근소인수분해는 어떤 수를 소수들의 곱으로 표현하는 것이므로 주어진 수를 소수인지 판별하고 맞으면 그대로 출력, 아니면 2부터 증가하는 수로 나눠질 때까지 나누고 갱신 된 수에 이 과정을 반

https://www.acmicpc.net/problem/11050문제접근이항계수란 주어진 N에 대해 K개를 뽑는 경우의 수를 말한다. 즉, 예제로 보면 1부터 5까지의 수 중 중복되지 않는 두가지 수를 뽑는 경우를 구하면 된다. 그래서 이를 재귀로 구현했다.

https://www.acmicpc.net/problem/2775문제접근어떤 값을 얻기 위해 다른 어떤 값들이 연계되어있으면 DP를 사용하는 문제다. 문제의 규칙을 볼때, 예를들어 3층의 4호를 알고 싶으면 2층의 1,2,3,4호를 전부 더해야한다.3층의 5호

https://www.acmicpc.net/problem/1834문제접근지도를 이차원 벡터에 표현하는데 (N,2)의 크기로 만든다. N은 칸수, 2는 왼쪽과 오른쪽 줄을 나타낸다.상근이가 이동 할 수 있는 세가지 방법을 현재의 좌표기준으로 정의한다. 전진은 +

https://www.acmicpc.net/problem/1414문제접근주어진 랜선들의 길이를 수로 변환해 모두 더한다. 이게 가지고 있는 총 랜선의 길이다.이제 N번까지의 컴퓨터를 이어야 하므로 주어진 행렬에 대해서 i와j가 같은 경우를 제외하곤 전부 양방향

https://www.acmicpc.net/problem/6209문제접근학생이 뛸 수 있는 점프거리의 최소값을 이분탐색의 mid값으로 잡아준다. 처음엔 시작점,끝점을 기준으로 잡고 시작 점부터 다음 돌 까지의 거리를 본다. 이 mid보다 작으면 더 뛸 수 있는

https://www.acmicpc.net/problem/1010문제접근파스칼의 삼각형 성질의 이용하여 dp로 풀 수 있다.(M,N)으로 삼각형을 그려보면 (1,1)은 1가지, (2,1)은 2가지, (2,2)는 1가지, (3,1)은 3가지, (3,2)는 3가지

https://www.acmicpc.net/problem/2748문제접근피보나치 수열을 구하고 주어진 n에 대해 뽑아서 출력한다.문제해결코드후기처음에 틀렸다길래 틀릴만한 곳이 int형 밖에 없었다. 그래서 90을 넣어 찍어봤더니 쓰레기값이나왔고, long형으로

https://www.acmicpc.net/problem/10798문제접근이차원 동적배열을 생성하여 단어의 최대 길이가 15이므로 바깥일차원 배열의 크기를 15로 만들어준다.이제 5개의 단어에 대해 해당 자리수에 단어가 있으면 미리 15크기로 만든 배열에 들어

https://www.acmicpc.net/problem/25206문제접근맵으로 학점 변환표를 미리 만들어둔다. 그럼 입력으로 등급이 들어오면 등급을 key값으로 가지는 value값이 실수형으로 반환된다.총 20가지의 과목이므로 20번 StringTokeniz

https://www.acmicpc.net/problem/11005문제접근어떤 수를 B진법으로 바꾸기 위해선 몫이 0이 될 때까지 나눈 나머지를 쭉 나열한 후 역순으로 뒤집었을 때 변환된다.예를들어 37을 2진법으로 바꾸면 2로 쭉 나누었을 때, 1101001

https://www.acmicpc.net/problem/11723문제접근map을 사용하여 기능을 구현한다.all 명령어와 empty명령어는 입력으로 x가 들어오지 않기 때문에 StringTokenizer때문에 먼저 처리해준다.이제 else문으로 x를 쓰는 기

https://www.acmicpc.net/problem/1158문제접근주어진 원소들을 계속 순환하는 문제이므로 큐를 사용하는데 이 중 deque를 사용한다. deque는 큐+스택의 기능을 한다.원하는 K번째의 원소를 위해 맨 앞의 원소를 맨 뒤로 보내주면서

https://www.acmicpc.net/problem/4949문제접근입력받은 문자열을 순회하며 (, \[, ), ]가 나올 때에 대해 처리를 구현해준다.(와 \[는 스택에 해당 문자들을 넣어준다.)와 ]는 스택의 peek에 해당하는 값을 가져와서 같으면 스

https://www.acmicpc.net/problem/10866문제접근Deque를 선언하고 문제에서 주어진 기능에 맞추어 deque의 기능을 사용해 출력한다. 문제해결코드후기deque의 기능을 더 활용할 수 있는 기회였다.
https://www.acmicpc.net/problem/1026문제접근S의 값이 가장 작아지려면 가장 큰 값은 가장 작은 값과 곱해지고 그 다음 큰 값은 그 다음으로 작은 값과 곱해지는 과정을 반복해나가면 된다.따라서 A는 오름차순, B는 내림차순(반대도 상

https://www.acmicpc.net/problem/11727문제접근2x1을 만드는 경우는 2x1짜리로 만드는 1가지,2x2는 2x1짜리 2개로 1가지 + 1x2짜리 2개로 1가지 + 2x2짜리 1개로 1가지 해서 총 3가지이다.2x3은 2x1 3개로 1

https://www.acmicpc.net/problem/1966문제접근트리 맵을 사용하여 인쇄 목록의 우선순위를 key값으로하여 value값으론 그 우선순위를 가진 인쇄 물의 수를 저장한다. 트리 맵이므로 key가 오름차순으로 정렬된다. 그리고 큐를 사용해

https://www.acmicpc.net/problem/17297문제접근각 N에 대한 문자열의 길이는 N-1번쨰의 길이 + 공백 1글자 + N-2번째의 길이가 된다. 입력받은 M이 어떤 번째에 속하는지 알기 위해 M보다 더 길어지는 경우 까지 문자열의 길이를

https://www.acmicpc.net/problem/16137 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/15651문제접근재귀를 사용하여 배열 num에 1부터 N까지 M개의 원소를 가지는 수열을 만든다.재귀로 넘길 때, 즉 새로운 자리에 어떤수가 올 수 있는지를 정할 때, 중복이 가능하다고 했으므로 1부터

https://www.acmicpc.net/problem/1002문제접근재명이가 가능한 위치는 좌표상에 찍어보면 규현,승환의 좌표기준 각각의 r1, r2거리에 있는 점이다. 이는 다시말해규현,승환의 좌표를 중점으로 가지며 r1과 r2를 반지름으로 가지는 두 원

https://www.acmicpc.net/problem/14501문제접근dp를 사용하여 해당 날짜에 각각 얼마나 벌 수 있나를 계산해 나간다.각 날에 대해, 일을 할 떄와 안할 때로 나눠줘야한다.먼저 오늘 일을 안하게 되면 내일 내가 번 돈은 어제 번돈+0,

https://www.acmicpc.net/problem/2193 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/18258문제접근큐를 이용해 문제에 주어진 기능을 큐의 기능을 사용하여 구현한다. back의 기능의 구현을 위해 queue가 아닌 Deque를 사용하여 접근한다.문제해결코드후기그냥 queue로 하려고 헀

https://www.acmicpc.net/problem/1904문제접근DP를 사용하여 문제를 푼다. 2xn타일 문제와 비슷한 문제이다.00짜리 한덩이와 1짜리 한덩이로 만드는것이다. 문자 앞에 0이 오면 안된다 라는 조건이 없기 때문에 가능하다.1xn짜리 타

https://www.acmicpc.net/problem/14425문제접근N개의 문자열을 입력받아 집합 S를 만들어놓고 M개의 문자열을 입력받아 이 M개의 문자열이 S안에 있나 확인하기 위해선최악의 경우 10,000 x 10,000번의 연산을 한다. 추가로 문

https://www.acmicpc.net/problem/156543문제접근입력받은 N개의 수를 사용하여 가능한 수열조합을 모두 만든다. 재귀와 방문처리를 이용하는데 재귀를 통해 이번 재귀에서 사용한 수를 방문처리한다. 다음 재귀로 넘어가서 또 모든 수 중 방

https://www.acmicpc.net/problem/1475문제접근방 번호를 문자열로 받아서 한 자리 씩 숫자로 변환해 이를 인덱스로하여 값으로 1씩 누적한다.6과 9는 서로 뒤집어서 쓸 수 있으므로 6과9를 제외한 나머지 숫자들 중 가장 많이 필요한 수
https://www.acmicpc.net/problem/2217 문제 접근 > 로프를 여러개 사용했을 때, 최대로 견딜 수 있는 중량은 사용중인 로프들 중 가장 적은 무게를 견딜 수 있는 로프 x 로프의 수가 된다. 이를 이용하기 위해서 배열에 주어진 로프를 모두
https://www.acmicpc.net/problem/2217 문제 접근 > 로프를 여러개 사용했을 때, 최대로 견딜 수 있는 중량은 사용중인 로프들 중 가장 적은 무게를 견딜 수 있는 로프 x 로프의 수가 된다. 이를 이용하기 위해서 배열에 주어진 로프를 모두

https://www.acmicpc.net/problem/7785문제접근맵을 사용하여 회사에 남아있는 사람을 관리한다.입력받는 로그에 따라서 enter가 들어오면 맵에 추가하고, leave가 들어오면 map에서 제거한다.추가로 조건에서 역순으로 출력하라고 했으

https://www.acmicpc.net/problem/1789문제접근N개의 수를 다 더해서 S를 만들려고 할 때, 가장 많은 개수의 N개를 사용하려면 가장 작은 자연수 1부터 차례대로 모으고 모으면서 더해가면된다.어디까지 더하는지는 더해서 나온 수가 S에서
https://www.acmicpc.net/problem/17471문제접근c++의 next_permutation메소드를 이용해 구역들 중 가능한 조합을 뽑고 해당 조합으로 A와 B로 나누어 각각 너비우선 탐색을 사용해 입력받은 연결관계도를 통해 연결을 해본다.

https://www.acmicpc.net/problem/1021문제접근회전하는 큐 이기 때문에 deque를 사용하여 구현한다.기본적으로 1번의 연산은 연산횟수로 치지 않기 때문에 2,3번 연산을 계속하며 1번 연산을 쓸 수 있게 첫 원소가 원하는 수가 될 때

https://www.acmicpc.net/problem/9375문제접근map을 통해 옷의 종류를 key값으로 하여 value값으로 옷의 개수를 누적한다. 옷의 이름은 필요없다.가능한 경우를 구하기 위해 예를들어 안경, 바지 2종류를 조합한다고 하면 안경의 개

https://www.acmicpc.net/problem/13460 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/1094문제접근문제를 요약하면 막대를 반 씩 나눠가며 각각 한개 씩만 가질 때, 해당 막대들로 X를 몇 개의 조각을 사용해 만들 수 있냐 이다.가능한 막대는 32, 16, 8, 4, 2, 1이고, 이는

https://www.acmicpc.net/problem/13305문제접근일단 첫 주유소에서 무조건 주유를 해야하므로 시작 비용을 첫 주유소의 가격으로 잡는다.이제 다음에 어디 주유소를 갈지 봐야하는데 중간에 시작 주유소보다 싼곳이 있으면 거기까지 갈 수 있을

https://www.acmicpc.net/problem/2559문제접근누적합으로 풀 수 있다.주어진 측정된 온도들을 입력을 받으며 누적합의 초기값을 만들기 위해 주어진 K개의 온도를 합해서 저장해 둔다.이 초기값을 이용해 각각의 K개의 합을 구한다면sum(i

https://www.acmicpc.net/problem/1269문제접근집합을 표현하고자 할 떄는 set을 사용하여 나타 낼 수 있다. set은 map에서 value를 뺀 기능이라고 생각할 수 있다.두 집합 A와 B를 set을 통해 만들고 set의 기능인 re

https://www.acmicpc.net/problem/1476문제접근1,1,1부터 시작해서 1일씩 계속 더해나가다는데 각각 15, 28, 19를 넘어가게 되면 1로 초기화 해주며 증가시켜나간다.그러다 세 수가 각각 예제의 입력으로 주어진 수와 같아지면 총

https://www.acmicpc.net/problem/2003문제접근주어진 배열 A에 대해 누적합을 구해둔다.맨 마지막 인덱스의 누적합을 right, 맨 마지막 -1 번째를 left로 두고 right에서 left를 빼나간다.뺀 값이 M보다 작으면 left를

https://www.acmicpc.net/problem/9655문제접근상근이와 창영이는 돌을 1개 또는 3개 씩 가져갈 수 있다. 상근이가 1개를 가져가던 3개를 가져가던 돌의 개수는 홀수개고, 다음으로 창영이가 1개를 가져가면 2개 혹은 4개 혹은 6개가

https://www.acmicpc.net/problem/3273문제접근수열 내 두 수를 골라 두 수의 합이 x인지 보기 위해서는 이중 반복으로 수열의 각 원소를 모두 대조하며 더해보는 방법이 있지만 n의 범위가 최대 10만까진데 최악의 경우 10억번 연산해야

https://www.acmicpc.net/problem/11478문제접근이중 반복을 도는데 첫 반복문은 1부터 문자열의 길이까지 돈다. 이는 부분문자열의 길이를 말한다. 즉, 길이가 5인 문자열에 대해 길이가 1부터 5길이 까지 잘라주기 위함이다.안쪽 반복문

https://www.acmicpc.net/problem/17219문제접근StringTokenizer로 사이트, 패스워드 조합을 입력받아서 Map에 key값으로 사이트, value값으로 패스워드를 저장한다.입력이 모두 끝나면 M번만큼 사이트를 입력받으며 Map

https://www.acmicpc.net/problem/15657문제접근백트래킹을 사용해 모든 조합을 만들어나간다.문제에서 주어진 비내림차순은 다시 말해 같은 수거나, 오름차순이 되는 수열을 말한다.따라서 입력받은 자연수를 정렬한 뒤, 재귀로 들어가서 돌아가

https://www.acmicpc.net/problem/1735문제접근수학에서 두 분수의 합을 구하는 방법을 그대로 구현한다.합이 된 분수의 분모는 두 분수의 최소공배수가 되고,분자는 각 분모가 최소공배수가 되기위해 곱했던 수를 각각 곱해준 뒤 더한 수이다.

https://www.acmicpc.net/problem/15655문제접근백트래킹과 정렬을 이용한다. N개의 자연수를 배열에 입력받아 저장한 후, 오름차순으로 정렬해 준 뒤, 백트래킹으로 조합을 만들 때, 재귀로 현재 뽑은 수보다 더 큰수 중에서 뽑을 수 있도

https://www.acmicpc.net/problem/28278문제접근스택을 사용하여 문제에 주어진 스택의 기능을 구현한다.문제해결코드후기스택의 세부기능을 알게 되었다.pop()은 큐의 poll같은 기능을 한다고 한다.

https://www.acmicpc.net/problem/1004문제접근어린왕자가 도착점까지 가기 위해 곡선으로 원을 다 피해가면 되고, 못피하는 원은 시작점이나 끝점을 감싸고 있는 원이다.이때, 시작점 끝점 둘다 감싸고 있는 원은 뚫을 필요가 없으므로 이에

https://www.acmicpc.net/problem/18352문제접근문제에 주어진 도시들의 연결관게를 이용해 각 도시별로 시작점 X부터 갈 수 있는 최단거리를 구한다.그래프 탐색을 이용하여 최단 거리를 구하고 주어진 k와 비교해서 같은 값을 가지는 도시를

https://www.acmicpc.net/problem/2346문제접근deque를 사용해서 원형 큐를 구현한다.큐에 배열로 처음 풍선의 번호, 풍선안에 있는 번호를 쌍으로 저장한다.맨처음 1번 풍선을 터뜨리고 내부의 수에 쓰여진 대로 deque를 돌린다.이때

https://www.acmicpc.net/problem/10974문제접근1부터 N까지 중 모든 수를 사용해서 가능한 모든 경우의 수열을 만든다.기존 백트래킹에서 특정 인덱스번째로 재귀로 넘겼다면 1부터N까지에 대해 boolean형 배열을 만들어 사용한 수를

https://www.acmicpc.net/problem/1049문제접근필요한 기타줄에 대해 6개 이상이면 낱개 가격들 x 6한거랑 세트들의 가격을 전부 비교하여 젤 작은 가격을 고른다. 그리고 6개보다 작아질 때 까지 위 과정을 반복하다가 6개 미만이면 해당

https://www.acmicpc.net/problem/2075문제접근우선 순위 큐를 통해 입력받은 N개의 수만 다뤄주면서 서로비교한다.기본적으로 최소힙이므로 peek, 맨앞엔 가장 작은 값이 들어가고 점차 큰 값이 들어있다.N개만 따져주는 이유는 문제에서

https://www.acmicpc.net/problem/1834문제접근여타 풀었던 N과 M문제들과 같지만결과가 중복되면 안되기때문에 매 자릿수 마다 이전에 썼던 수를 기록해두고 같은 수를 쓰게 된다면 넘어간다.또 모든 수 중 중복없이 써야하므로 기본적으로 매

https://www.acmicpc.net/problem/11722 문제 접근 > 문제해결 코드 후기 >

https://www.acmicpc.net/problem/2512문제접근이분탐색으로 예산의 상한값을 mid값으로 잡아 mid값보다 요청값이 작으면 그냥 더하고, 크면 mid값만큼만 더하고를 반복하며 더한 값이 총 예산을 넘어가지 않는 mid값을 찾아낸다.문제해

https://www.acmicpc.net/problem/11051문제접근dp를 사용하여 파스칼의 삼각형으로 N,K를 구한다.dp(i,1)은 항상 i가지를 가지고 dp(i,i)는 항상 1가지를 가진다. 작은 수 일때의 이항계수를 구해보면 dp(i,j)는 dp(

https://www.acmicpc.net/problem/15666문제접근백트래킹으로 가능한 수열 조합을 탐색한다.문제에서 조건으로 같은 수를 여러번 골라도 된다고 하였고, 비 내림차순이어야 한다고 했기 때문에 재귀로 넘기는 인덱스는 i로 넘겨 같은 수를 여러

https://www.acmicpc.net/problem/9184문제접근재귀를 사용하여 문제에 주어진 함수를 구현하는데 문제에 주어진대로 그대로 구현하면 시간초과가 난다. 따라서 dp를 사용하여 함수내에서 중복되는 값은 미리 구해놓은 DP값을 불러와 사용해 연

https://www.acmicpc.net/problem/17413문제접근태그와 단어를 구별해주는게 가장 중요한 과제이다.'<'가 들어오면 태그 시작이므로 태그가 시작됐다고 boolean으로 flag역할을 해준다.또 '<'일땐, 중간에 나왔을 경우엔

https://www.acmicpc.net/problem/10819문제접근문제의 조건에 보면 N이 3이상 8이하가 된다.범위가 매우 작다는 건 브루트포스를 이용할 수 있어진다.가능한 모든 경우를 백트래킹으로 뽑아서 따져준다고하면 8! 즉, 약 4만번 x 계산

https://www.acmicpc.net/problem/11048문제접근dp를 사용하여 N,M에 도착했을 때, 가장 많은 사탕을 가지는 경우를 구해준다.i,j위치에 도달하는 방법은 문제에 주어진 세방향으로 이동하는 방법을 고려했을 때,i-1, j에서 오는거

https://www.acmicpc.net/problem/18111문제접근땅의 상태를 입력받으면서 가장 낮은 땅과 가장 높은 땅을 미리 저장해둔다. 가장 낮을 때부터 가장 높을 때까지 반복문을 돌며 모든 높이에 대해 해당 높이에 대해 각각의 땅에 대해 블럭을

https://www.acmicpc.net/problem/21276문제접근마을에 사는 사람의 수가 주어져있고, 조상 후손 관계가 주어졌기 때문에 위상정렬을 사용할 수 있다.이름이 문자열로 주어지기 때문에 이를 인덱스로 관리하며 편하게 접근 할 수 있도록 맵으로

https://www.acmicpc.net/problem/1051문제접근정사각형은 네 변의 길이가 같은 사각형이다. 따라서 주어진 숫자 직사각형을 각 행마다 동일한 숫자가 있는지 확인하며 있다면 두 좌표의 차이를 한 변의 길이로 잡고 해당 길이 만큼 행을 이동

https://www.acmicpc.net/problem/1107문제접근주어진 N이 최대 500,000까지니까 내가 누를 수 있는 수들 중 봐야하는 수는 0부터 최대 999,999번이다.이때 고장난 번호까지 생각해서 번호의 각 자리마다 검증한다고 하면 최대 6

https://www.acmicpc.net/problem/10971문제접근백트래킹으로 모든 점에서 시작하는 경우를 따지면서 일단 시작점을 기록해놓고 경우를 따진다.모든 도시를 방문하면 앞서 기록한 시작점으로 다시 돌아가기 위해 마지막 지점에서 시작점까지의 비용
https://www.acmicpc.net/problem/7432 문제 접근 > 트라이 알고리즘을 사용하여 디스크의 구조를 트리화 한다. 트리구조이므로 Node라는 구조를 정의하고 이는 map으로 자식의 정보를 가지는데 키값으로 자식 폴더의 이름을, 밸류값으로 자식

https://www.acmicpc.net/problem/19640문제접근문제의 조건을 통해 봐야하는게 근속일수 D, 급한정도 H, 줄 번호, 몇번 째로 왔는지 이다.각 줄마다 맨 앞에 있는 사람 중 문제의 비교 조건을 만족하는 최 선두를 찾아야한다. 이는 각

https://www.acmicpc.net/problem/5014문제접근S층에서 목표하는 G층까지 가야한다. 이때, 갈 수 있는 방법은 U만큼 올라가는거, D만큼 내려가는것이다.예를 들어 2층에서 5층가는데 U가 2고 D가 1이면 2->4->6->5로 가면 될

https://www.acmicpc.net/problem/14940문제접근2가 목표 지점이고 모든 점에서 2까지 가야한다. 즉, 1인 모든 지점을 돌면서 그래프 탐색을 해야한다.하지만 이를 반대로생각해보면 2에서 BFS를 통해 탐색할 수 있는 모든 지점을 다
https://www.acmicpc.net/problem/1946 문제 접근 > 어떤 사람의 두 성적이 다른 어떤 사람의 두 점수 보다 전부 뒤지면 그 사람은 떨어지게 된다. 따라서 개인의 두 성적 중 한 성적을 기준으로 오름차순으로 정렬을 한 뒤 다른 한 성적을 본

https://www.acmicpc.net/problem/1309 문제 접근 문제해결 코드 후기

https://www.acmicpc.net/problem/1103문제접근DFS를 이용해서 시작점에서 사방으로 DFS를 해나가며 바닥에 쓰인 숫자 만큼 4방으로 나아간다.이때, 이동횟수를 누적하는데 밖으로 나가거나, 구멍에 빠지면 이동거리 +1 하고 끝내주고,만

https://www.acmicpc.net/problem/2885문제접근문제에서 초콜릿의 조각 수가 2의 거듭제곱으로 나오기 때문에 이런 문제는 2진수로 따져 풀 수 있다.따라서 K가 2의 거듭제곱이면 K조각짜리 한덩이 쓰면 끝나서 K, 0번 출력이고거듭제곱이

https://www.acmicpc.net/problem/1138문제접근주어진 좌측에 자신보다 몇명이나 큰 사람이 있는지의 수를 기반으로 오름차순 정렬을 한다.결과를 저장할 배열에 해당 우선순위 대로 집어넣는데 배열의 각 원소와 비교하며 자기 보다 큰 사람이

https://www.acmicpc.net/problem/2258문제접근어떤 비용의 고기를 샀을 때, 그 고기보다 싼 고기들은 묻지도 따지지도 않고 덤으로 준다.따라서 내가 무게 3에 비용 5짜리를 사면 이 고기보다 싼 (1, 2), (10, 3), (2,4)
https://school.programmers.co.kr/learn/courses/30/lessons/12900문제접근n이 1일 때 부터 가능한 경우를 모두 따져준다.1은 1가지, 2는 가로두개, 세로두개 해서 2가지, 3은 세로1 가로2의 두가지 + 세로3

https://school.programmers.co.kr/learn/courses/30/lessons/87694문제접근일단 모든 직사각형의 정보에 대해서 해당 직사각형이차지하고 있는 좌표에 대해 표시를 한다.테두리에 해당하는 부분은 1로 바꿔주고 아닌 부분은

https://www.acmicpc.net/problem/18111문제접근dp를 사용하는데 이때, dp의 인덱스 기준을 해당 N을 사용한 횟수로 두고 가야한다.그리고 이 dp(i)에 대한 원소들은 N을 i번 썼을 때, 만들 수 있는 수들을 가진다.또 모든 경우

https://school.programmers.co.kr/learn/courses/30/lessons/42897문제접근선형이 아닌 원형 관계이므로 만약 첫 집을 털면 마지막 집도 인접한 집이므로 털 수 없다. 마찬가지로 마지막집을 털면 첫집을 털 수 없다.