14502 연구소 : https://www.acmicpc.net/problem/14502벽을 세우는 일과 바이러스를 퍼트리는 일을 분리해서 생각을 했다.벽을 세우는 일은 백트래킹을 사용하여 3개의 벽을 세우고(dfs) 3개의 벽을 세웠을 때 바이러스를 퍼트리는
15658 드래곤 커브 : https://www.acmicpc.net/problem/15685처음에 문제를 이해를 못해서 많은 시간이 걸렸다. 드래곤 커브가 무조건 하나로 연결이 되어 있어야 한다고 이해를 하고 봤기 때문에 "1세대 드래곤 커브가 연결이 안되어
괄호 변환 : https://programmers.co.kr/learn/courses/30/lessons/60058주어진 변환 알고리즘을 사용하면 해결할 수 있는 문제.문자열 w를 "균형잡힌 괄호 문자열" u,v 로 나누는 함수 stringSeparate와 해
수식 최대화 : https://programmers.co.kr/learn/courses/30/lessons/67257 Problems Solves String타입인 expression을 숫자와 연산자를 분리하고 해당 숫자에 연산자를 붙여서 연산자의 우선순위를 모두
3차 방금 그곡 : https://programmers.co.kr/learn/courses/30/lessons/17683네오가 들은 멜로디 m이 musicinfos에 있는 악보에 포함되어있는지 확인 한다.musicinfos를 순차적으로 확인 한 후 m이 포함된
1차 캐시 :https://programmers.co.kr/learn/courses/30/lessons/17680캐시 알고리즘을 LRU(Least Recently Used)알고리즘을 사용한다는 것에 힌트를 얻어 LinkedList< String >로 캐시
Problems Solves 두 번째 푸는 거지만 풀이가 바로 생각이 안나서 속상하다.. 단어 수학 문제 풀이의 핵심은 각 알파벳에 어떤 수를 넣어야 가장 큰 수가 될수 있는지 찾는 것이다. 알파벳이 가지는 자릿수의 합이 클수록 더 큰 수로 치환해서 값을 구해야한다.
16234 인구이동 : https://www.acmicpc.net/problem/16234인구 이동이 없을때 까지 반복문BFS를 통해 연합을 구하는 함수 makeGroupmakeGroup에서 반환한 해당 연합의 좌표 리스트로 인구 이동 결과를 갱신하는 함수 s
[3차] 압축 : https://programmers.co.kr/learn/courses/30/lessons/17684 Problems Solves 문자열 msg를 순차적으로 돌면서 현재 문자 w와 다음 알파벳 c가 사전에 등록되어있지 않다면 w+c 문자를 사전에
1차 추석 트래픽 : https://programmers.co.kr/learn/courses/30/lessons/17676처음에는 첫번째 로그의 처리 시작시간부터 마지막 로그의 처리 끝시간 까지 비교하면서 처리하려고 했더니 로직도 복잡하고 막막했었다.해설을 보
자물쇠와 열쇠 : https://programmers.co.kr/learn/courses/30/lessons/600591첫번째 스스로 풀었을때는 Key에서 돌기의 좌표 리스트 keyPiontList와 Lock의 홈의 좌표 리스트 lockHoleList를 만들어
1753 최단경로 : https://www.acmicpc.net/problem/1753카카오 기출 문제 중 다익스트라를 이용한 문제가 있는걸 보았는데 다익스트라 알고리즘은 처음 들어보는 알고리즘이라 나중에 풀어보기전에 개념을 익히고자 백준 다익스트라 문제를 풀
표 편집 : https://programmers.co.kr/learn/courses/30/lessons/81303!\[](https://velog.velcdn.com/images/hyunjong96/post/b62933a3-2945-4261-9743-
순위 : https://programmers.co.kr/learn/courses/30/lessons/49191다익스트라 알고리즘을 공부하다보니 다익스트라와 유사한 유형인 플로이드 와샬 알고리즘을 알게되었다. 바로 알아보도록 하자.다익스트라와 플로이드 와샬 둘
보석 쇼핑 : https://programmers.co.kr/learn/courses/30/lessons/67258투 포인터 알고리즘을 이용한 문제라고 한다.여기서 투 포인터란 배열을 탐색할 때 쉽고 효율적인 방법으로 사용하기 위한 방법이다.하나의 배열이 있고
1차 셔틀버스 : https://programmers.co.kr/learn/courses/30/lessons/17678꽤나 막막했던 문제였는데 마지막 버스를 탄다고 했을 때 마지막 버스의 상황과 마지막 크루의 시간에 대해서 조건을 잘 맞춘다면 해결법은 찾을수
불량 사용자 : https://programmers.co.kr/learn/courses/30/lessons/64064분명 비슷한 유형의 문제를 풀어봤는데 생각 못했던게 속상했던 문제.백트래킹과 문자열의 matches를 이용하여 조건에 맞는 아이디 조합을 문자열
합승 택시 요금 : https://programmers.co.kr/learn/courses/30/lessons/72413시작점 S에서 각각 A와 B로 가는 최소 비용을 구하는 문제.그래프의 최소 거리(비용)을 구하는 문제이고 시작점이 있어서 다익스트라 알고리즘
경주로 건설 : https://programmers.co.kr/learn/courses/30/lessons/672592차원 배열로 해결하려다 안되서 다른 분들의 코드를 보고 해결했다.3차원 배열을 사용하는걸 보고 전에 백준에서 풀어봤던 유형이라 바로 풀수 있었
광고 삽입 : https://programmers.co.kr/learn/courses/30/lessons/72414추석 트래픽 문제를 풀고나서 신나서 시간문제에 호기롭게 시작했다가 멘탈이 나가버린 문제.해당 문제는 구간합 알고리즘또는 투 포인터 알고리즘을 이용
K번째 수 : https://www.acmicpc.net/problem/1300이분 탐색 알고리즘을 좀 풀어보고 싶어서 시도해봤는데, 이걸 어떻게 이분 탐색으로 풀지 라는 생각을 했었다.이 문제를 이분 탐색으로 풀기 위해서는 몇가지 찾아내야하는 것이 있다.A\
미로 탈출 : https://programmers.co.kr/learn/courses/30/lessons/81304코테 준비한지 얼마 되지는 않았지만 가장 어려웠던 문제였던것 같다.일단 비트 마스크도 몰랐어서 함께 공부했다.비트 마스크는 딱 필요한 것만 정리해
기둥과 보 설치 : https://programmers.co.kr/learn/courses/30/lessons/60061기둥과 보를 삭제할때 너무 어렵게 생각해서 어렵게 느껴졌던 문제. 삭제 방법만 알고나니 구현은 어렵지 않았다.구조물이 만들어지는 배열을 y구
길 찾기 게임 : https://programmers.co.kr/learn/courses/30/lessons/42892트리노드를 구성하는데 쓸데 없는 예외처리와 가능성을 생각하다보니 주어진 조건을 생각못하고 너무 어렵게 생각했다.재귀함수를 통해 Node들을 연
카드 짝 맞추기 : https://programmers.co.kr/learn/courses/30/lessons/72415특별한 알고리즘 없이 수열을 이용하여 카드를 방문하는 모든 경우의 수의 순서를 만들어 BFS를 통해 풀어내는 방법.board의 크기가 4\*
k진수에서 소수 개수 구하기 : https://programmers.co.kr/learn/courses/30/lessons/92335소수를 찾는 조건과 소수 찾는 코드만 신경써주면 되는 문제.주어지는 정수에서 k진수로 변경했을때 소수를 찾는 조건0P0처럼 소수
주차 요금 계산기 : https://programmers.co.kr/learn/courses/30/lessons/92341어려운 문제는 아니였다. 하지만 몇몇의 조건을 잘못 설정하고 예외처리를 하면서 시간을 많이 잡아먹고 풀어서 좀 아쉬웠던 문제랄까..Map을
양과 늑대 : https://programmers.co.kr/learn/courses/30/lessons/92343 Problem ![](https://v
징검다리 건너기 : https://programmers.co.kr/learn/courses/30/lessons/64062슬라이딩 윈도으로 해결하려했으나 시간초과로 탈락.슬라이딩 윈도우를 했을 경우 시간복잡도가 O(K\*(N-K))가 되기 때문에 stones탐색
매칭 점수 : https://programmers.co.kr/learn/courses/30/lessons/42893 Problem Solve 문제자체는 어렵지 않지만 정규식을 모르면 하드코딩을 해야하는 문제. 문자열에서 특정 패턴의 문자열을 찾기위해 util.P
3차 파일명 정렬 : https://programmers.co.kr/learn/courses/30/lessons/17686?language=java특별한 알고리즘없이 Comparable을 이용해서 풀수있는 문제.head, number, tail을 분리해서 he
블록 이동하기 : https://programmers.co.kr/learn/courses/30/lessons/60063 Problem So
3차 n진수 게임 : https://programmers.co.kr/learn/courses/30/lessons/17687n진수로 변경하는 법을 알면 쉽게 풀수 있다. 하지만 문제를 잘못 이해해서 0~1000까지의 숫자를 n진수로 변경해서 런타임이 발생하는걸
나무 재태크 : https://www.acmicpc.net/problem/16235봄,여름,가을,겨울 순으로 필요한 값들을 갱신해주고 K만큼 반복하면 된다.문제 풀이순서는 아래와 같다.N\*N의 2차원 배열 5의 값으로 초기화나무의 정보(x,y,나이)를 저장하
16236 아기상어 : https://www.acmicpc.net/problem/16236현재 상어의 위치에서 부터 가장 가까운 거리의 먹을수 있는 물고기 까지의 이동하며 더 이상 먹을수 있는 물고기가 없을때 까지 반복한다.BFS를 통해 먹을수 있는 물고기가
17144 미세먼지 안녕! : https://www.acmicpc.net/problem/17144미세먼지를 확산하는 함수와 공기청정기를 위,아래로 실행시켰을때 함수를 T번 반복 후 배열에 남아있는 미세먼지의 합을 반환하는 문제.미세먼지를 확산하는 경우 각 미세
2470 두 용액 : https://www.acmicpc.net/problem/2470N이 100000이기 때문에 두 용액을 각각 비교하면 50000\*50000이 나올수 있기 때문에 O(N)으로 풀수 있는 방법 중 투포인터를 사용했다.두 용액의 합이 0과 가
20922 겹치는 건 싫어 : https://www.acmicpc.net/problem/20922최장 연속 부분 수열의 길이를 구하고 최대길이 N이 N\*N이 1억을 넘기때문에 투포인터를 고려해 볼 필요가 있다.start와 end를 0으로 놓고 end가 수열의
17143 낚시왕 : https://www.acmicpc.net/problem/17143격자판(R,C)이 최대 100이고 상어가 최대로 움직일수 있는 횟수가 최대 1000이다.낚시왕이 오른쪽으로 이동할수 있는 횟수 최대 100, 상어가 이동하는 경우 1000(
15961 회전 초밥 : https://www.acmicpc.net/problem/15961초밥의 종류 개수를 쿠폰을 고려하며 최대값을 구하는 문제이다.초밥의 선택 여부를 가리키는 1차원 배열을 이용해서 현재 K범위에 초밥 종류의 개수를 구하고 K범위에 쿠폰
3151 합이 0 : https://www.acmicpc.net/problem/3151 Problem Solve 총 3개의 경우의 수를 찾아야하므로 3중 반복을 쓰게 되면 O(10000^3)으로 시간초과가 발생하게된다. 기준 한명만 반복문을 쓰고 나머지 두명은 투
17140 이차원 배열과 연산 : https://www.acmicpc.net/problem/17140 Problem Solve R연산과 C연산만 조건에 맞게 구현해주면 풀수있는 문제이다. 각 연산은 (1)각각의 수가 몇번의 수가 나왔는지 알아야한다, (2)수의
17142 연구소 3 : https://www.acmicpc.net/problem/17142M개의 바이러스를 재귀를 통해 선택하고 선택한 바이러스가 동시에 퍼져서 연구소 배열의 빈칸을 채우는데까지 걸리는 시간을 구하기 위해 BFS를 사용하면된다.바이러스가 퍼지
17779 게리맨더링2 : https://www.acmicpc.net/problem/17779문제가 꽤나 복잡해보여서 겁부터 먹었지만, 풀다보니 문제에서 조건을 다 제공해주고있었다.특정 기준점을 선택하고 경계선을 그어보게 되면 평행사변형의 모양이 된다.그리고
20442 ㅋㅋ루ㅋㅋ : https://www.acmicpc.net/problem/20442알고리즘은 국어문제라는 것을 다시 한번 느끼게 해준 문제.'ㅋㅋ루ㅋㅋ'문자열을 타겟 문자열이라고 하자.처음에는 타겟 문자열+타겟 문자열 = 타겟 문자열이 된다라는 고정관
1920 수 찾기 : https://www.acmicpc.net/problem/1920N이 100000이므로 이중 반복은 불가능하다. M의 수를 반복하는데 O(100000), N의 수에 taget여부를 확인하는데 binary_search O(logN)으로 해결
10816 숫자 카드 2 : https://www.acmicpc.net/problem/10816이전에 풀었던 문제 에서는 배열에 target의 존재 여부를 확인한 문제였다면. 이번 문제는 배열에 존재 여부가 아닌 존재하는 개수를 구하는 문제이다.이진 탐색과 비
18870 좌표 압축 : https://www.acmicpc.net/problem/18870해당 문제는 Map을 이용하여 중복을 제거하여 압축 결과를 반환하는 방법과 이분 탐색을 이용해서 압축 결과를 반환하는 방법 두가지가 있다.좌표 압축의 결과는 Xi>Xj를
2295 세 수의 합 : https://www.acmicpc.net/problem/2295세 수의 합이 집합 U에 있는 경우 합의 최댓값을 구하는 문제.세 수를 구하고 O(N^3) 합의 포함 여부를 구하면 O(N) 시간 초과가 발생한다.적어도 O(N^2)이나
1654 랜선 자르기 : https://www.acmicpc.net/problem/1654Parametric Search란 조건을 만족하는 최소/최댓값을 구하는 문제(최적화 문제)를 조건의 참/거짓 여부를 판단하는 문제(결정 문제)로 변환하여 푸는 문제이다.랜
17837 새로운 게임2 : https://www.acmicpc.net/problem/17837문제 구현의 접근은 오래걸리지 않았지만 디버깅에 너무 많은 시간이 낭비된 문제. 몇시간동안 잡지 못한 이슈가 3차원 배열로 체스 말이 겹쳐져있는 여부를 확인하는 식으
17822 원판 돌리기 : https://www.acmicpc.net/problem/17822원판을 T번 회전시킨 후 원판에 적힌 합을 출력하는 문제.2차원 배열의 행을 원판, 열을 각 위치의 번호로 초기화 시킨후 원판을 회전시키는 함수 turn과 회전 후 원
10815 숫자 카드 : https://www.acmicpc.net/problem/10815서로 다른 두 용액의 합이 0과 가장 가까운 것을 찾는 문제.이분 탐색을 이용해서 start = 첫번째 용액, end = 마지막 용액으로 초기화 한 후 arr\[star
17825 주사위 윷놀이 : https://www.acmicpc.net/problem/17825게임판을 만드는게 핵심이였던 이번 문제.게임판을 만드는데도 메인 길(둘러서 가는길)과 지름길(가운데 길)로 가는 칸의 숫자가 중복되는게 있어서 조금 까다로웠었다.게임
20061 모노미노도미노 2 : https://www.acmicpc.net/problem/20061구현한 코드가 좀 길어서 다르게 구현하는 방법이있을까 하고 찾아봤지만 다른 분들도 그냥 구현하면 된다. 라고 했기 때문에 다른 분들이 나보다 최적화를 잘했구나 라
7453 합이 0인 네 정수 : https://www.acmicpc.net/problem/74534중 for문으로 모든 값을 비교해서 합이 0인 쌍의 개수를 구할수 있지만, N이 4000이므로 O(4000^4)로 절대 불가능하다.최소 O(4000^2)로 줄여서
19236 청소년 상어 : https://www.acmicpc.net/problem/19236 Problem Solve 상어가 배열에서 이동할 수 있는 모든 경우의 수를 파악하면서 상어가 잡아 먹은 물고기 번호의 최대 합을 구하는 것을 보고 딱 백트래킹 냄새가 났
11000 강의실 배정 : https://www.acmicpc.net/problem/11000주어진 수업시간의 시작시간 기준 오름차순으로, 동일하다면 끝시간 오름차순으로 정렬한다.PriorityQueue< Integer >에 수업을 시작할수 있는 시간을
15591 MooTube(Silver) : https://www.acmicpc.net/problem/15591 Problem Solve BFS를 돌면서 Q[i]에서 질문하는 조건에 맞는 채널에 연결되어있는 k이상인 채널의 개수를 반환하는 문제이다. 처음에 풀었을
19237 어른 상어 : https://www.acmicpc.net/problem/19237상어의 영역 int\[]\[] map, 상어의 냄새 int\[]\[] range, 상어의 우선순위 움직임 int\[]\[]\[]move구현의 순서는 아래와 같다.1\.
17780 새로운 게임 : https://www.acmicpc.net/problem/17780주어진 조건N : 체스판 크기 , K : 사용한 말의 개수, 이동방향 : 상,하,좌,우1턴은 1번말 부터 K번 말까지 순서대로 이동한다. \- 이동하는 말 위에 올라
19238 스타트 택시 : https://www.acmicpc.net/problem/19238주어진 조건N : 활동 영역, M : 목표 승객 수승객을 태우는 우선순위현재 택시 위치에서 최단거리인 승객최단거리가 같은 경우행이 작은 승객행도 같다면 열이 작은 승객
1459 걷기 : https://www.acmicpc.net/problem/1459좌표의 최대값이 (10억, 10억)이기 때문에 모든 경우의 수를 하나하나 찾을수 없다.이동할수 있는 경우의 수를 직접 찾아서 처리해야했다.걸을 수 있는 방법은 두가지 방법이 있다
3109 빵집 : https://www.acmicpc.net/problem/3109주어진 조건파이프는 첫번째 열(가스관)에서 부터 마지막 열(빵집)까지 연결되어야한다.파이프는 건물이 있는 곳과 파이프가 존재하는 곳에는 설치할수 없다.파이프는 오른쪽, 오른쪽 위
1911 흙길 보수하기 : https://www.acmicpc.net/problem/1911 Problem Solve Code Result Reference
1781 컵라면 : https://www.acmicpc.net/problem/1781처음 문제를 보고 이게 골드2 문제라고 생각을 하고 풀었지만 역시 반례는 존재했다.처음 풀이는 그저 데드라인 기준 오름차순 정렬, 컵라면 수 내림차순 정렬 한 후 각 데드라인의
20055 컨베이어 벨트 위의 로봇 : https://www.acmicpc.net/problem/20055주어진 조건N : 컨베이어 벨트 길이, K : 컨베이어 벨트 내구도컨베이어 벨트\[0] : 올리는 위치, 컨베이어 벨트\[N-1] : 내리는 위치로봇을 컨
20056 마법사 상어와 파이어볼 : https://www.acmicpc.net/problem/20056첫 번째 풀이에서 문제를 잘못이해해서 또 몇시간을 허비했다...1번행과 N번 행까지 번호가 매겨져있고, 1번 열과 N번 열까지 연결되어있다는 조건을 지나쳤다
2212 센서 : https://www.acmicpc.net/problem/2212풀이에 접근이 안되서 다른분의 풀이를 봤다.N개의 센서가 있고 K개의 집중국이 있다.평면상으로 센서가 있기 때문에 센서의 정수 값이 원점에서 센서까지의 거리이다.일단 N개의 센서
20057 마법사 상어와 토네이도 : https://www.acmicpc.net/problem/20057또 문제의 조건을 완벽히 이해못해서 시간이 걸린 문제되겠다..이번에 놓친 조건은 알파로 이동하는 모래의 양은 이동하지 않은 남은 모래의 양이라는 조건을 놓쳤
풀이 순서는 아래와 같다.2^N \* 2^N 크기의 격자인 map을 2^L \* 2^L 크기의 격자로 나눈다.나눈 격자 안에서 각 얼음을 90도 회전하여 위치를 갱신한다.그 후 map의 얼음 중 인접해 있는 얼음이 3개 미만이라면 해당 얼음의 양을 -1로 감소한다.이를
해당 문제를 풀기 위해서는 현재 연료 수 P와 주유소에서 충전할수 있는 연료의 수 b의 합이 성경이 출발 지점에서 이동할수 있는 거리임을 찾아내야한다.그 다음 P를 가지고 이동할수 있는 주유소 중 가장 많은 양의 연료를 충전할수 있는 주유소를 방문해야한다.그러기 위해서
도착마을 기준 오름차순으로 놓고 찾으려니 일부의 택배를 계산하지 못해 다른 분의 코드를 참고했다.도착 마을을 기준으로 오름차순을 하는 이유는 내리는 마을이 빠를 수록 택배를 빨리 내리고 다른 택배를 실을수 있기 때문이다.주어진 택배 정보는 아래와 같다.받는 마을을 기준
종이를 접었을 때의 규칙은 종이가 접힌 중심점을 기준으로 좌우(i, length-1-i)는 서로 반대로 접혀있다는 것이다.처음에는 중심점 하나만 가지고 양옆의 값들이 서로 다른지를 비교했었다.하지만 중심점 하나만 가지고 비교를 한다면 1110000(동호의 조건을 만족하
등수의 불만도를 최소화 하기 위해서는 각 예상등수를 오름차순 정렬하여 최대한 예상등수와 등수와의 차이를 줄여야한다.예상 등수를 오름차순하여 grade를 1부터 비교하며 불만도의 합을 구하는 것이다.이때 각 등수의 불만도는 최대 1000000, 학생의 수는 500000이
총 예산을 가지고 각 지방에서 요청하는 예산을 최대한으로 배정한 최대 예산배정 값을 구하는 문제이다.배정한 예산의 합이 총 예산을 넘어가지 않으면서 지방에서 요청하는 예산을 맞추기 위해서는 이분탐색을 사용해야한다.즉, 배정할 예산의 최대값(최적화 문제)와 예산의 총 합
연속된 소수의 합이 주어진 N이 되는 개수를 구하는 문제.이 문제는 N까지의 소수를 구한다음 연속되는 소수의 합이 N이 되는 것을 투 포인터를 이용해 해결한다.구현 방법은 쉽게 떠올랐지만 투포인터에서 조건을 맞추는데 조금 까다로웠던것 같다.먼저 N까지의 소수 리스트를
문자열에서 연속된 문자가 아닌 문자가 있다면 그룹 단어가 아니다.Set< Character > set을 통해 각 문자열의 문자를 저장한다.그 후 Stack< Character > stack에 이전 문자를 저장해서 비교한다.set에 문자가 없다.set에 해당
Problem 업로드중.. Solve 크로아티아 알파벳인 경우는 8가지가 있기 때문에 분기 처리를 통해 구현할 수 있다. 현재 단어가 'c'이고 다음 단어가 '=' 또는 '-'인 경우 현재 단어가 'd'이고 다음 단어가 '-'인 경우 또는 다음 단어가 'z'이고
주어진 문서에서 찾고자 하는 단어의 개수를 구하는 문제.주어진 문서와 비교하려는 단어를 각 문자씩 비교한다면 (2500\*50)\*2500으로 시간초과가 발생할것이다.문자열에서 startWith()메서드를 이용하면 쉽게 구할 수 있다.startWith()는 시작 문자열
해당 문제는 가장 작은 초콜릿과 그 초콜릿으로 최소 몇번 쪼개야하는지를 구하는 문제이다.가장 작은 초콜릿을 구하는 방법은 초콜릿의 크기에 힌트가 있다.초콜릿의 크기는 2의 제곱형태(1,2,4,8,16...)으로 이루어져 있고 크기의 절반으로 나눌수 있기 때문에 각 초콜
전화번호 목록을 이중 for문으로 비교하면 시간초과가 발생할수밖에 없다.그렇기 때문에 다른 방법을 찾아야한다.방법은 생각보다 쉬웠다.정렬을 이용하는 방법인데, 문자열 타입의 숫자를 정렬하게된다면 만약 일관성없는 전화번호로 리스트에 존재한다고 할때 어떤 전화번호의 앞에는
최대한 많은 과목을 수강하기 위해서는 각 과목을 최소로 들을수 있는 마일리지부터 신청해야한다.그러기 위해서는 각 과목에 신청된 마일리지를 내림차순 정렬 후 수강가능 인원의 범위에 있는 마일리지 중 가장 작은 마일리지를 선택한다.(마일리지가 같으면 성준이에게 우선순위가
듣도 못한 사람 리스트와 보도 못한 사람 리스트에 중복으로 존재하는 이름을 찾는 문제.해시 Set을 사용하여 해결할 수 있다.듣도 못한 사람을 중복없이 저장하기 위해 Set< String> set에 저장한다.보도 못한 사람 중 set에 저장되어있는 이름이 있다면
해당 문제는 한 번의 이동에서 옮길수 있는 최대 중량을 구하는 문제이다.주어지는 중량이 최대 10억이므로 중량을 구하는 것에 이분탐색을 고려해봐야한다.이분탐색으로 할 시 임의 다리가 버틸수 있는 중량을 선택하고 해당 중량으로 BFS를 통해 하나의 공장에서 다른 공장으로
2차원 배열에 각 장애물을 선언하고 이중 for문으로 비교한다면 500000\*200000으로 시간 초과가 발생한다.y축에서 출발했을 때의 장애물을 각각 1차원 배열에 저장하여 같은 위치에서 중복되는 장애물의 개수를 구해 최소가 되는 장애물의 개수와 파괴해야하는 장애물
최소 몇번의 게임을 해야 승률이 바뀌는지 구해야한다.일단 승률은 99%나 100%이라면 절대 변경되지 않는다.그렇기 때문에 X = 1000000000, Y = 980000000으로 놨을때 승률이 98%가 된다.여기서 승률이 변경되기 위해서는 1000000000이 되어야
마을의 위치와 인원수가 최대 10억인것을 보고 이분탐색으로 풀어야겠다고 생각은 했다.하지만 문제 이해가 잘 안돼서 다른 분의 풀이를 참고했다.일단 사람까지의 거리의 합이라는 지문이 헷갈렸다.사람까지의 거리의 합은 사람까지의 거리의 합은 어떤 지점에서 다른 지점까지의 인
첫번째 풀이에선 가격을 기준으로 오름차순 정렬, 무게를 기준으로 오름차순 정렬을 한 후, 무게를 누적합을 구하여 누적합이 M이상이 되었을 경우의 가격을 반환하도록 구현하였는데 틀렸다.이 구현의 반례는 3 84 24 21 3 이 된다.놓치고 있던 부분은 같은 가격을 구성
첫번째 풀이각 숫자 배열로 초기화크기 기준 내림차순, 위치 기준 오름차순배열을 순차적으로 돌면서 이전에 선택했던 숫자의 위치보다 크고(자리수가 뒤에) 선택할 수 있는 최소위치 k보다 작은 경우(자리수가 앞에)의 숫자를 선택해서 Queue에 저장한다.선택할수 있는 최소위
세 가지 용액을 반복문으로 돌리면 O(N^3)으로 시간초과가 발생한다.하지만 투포인터를 이용한다면 O(N^2)으로 해결할 수 있다.특정 용액(idx), 각 두 용액(left, right)를 이용한다.풀이 방법은 아래와 같다.용액을 오름차순 정렬한다.특정 용액(idx),
빡구현으로 하다가 너무 헷갈려서 다른 분의 풀이를 보다가 분배법칙 힌트를 얻어서 풀수 있었다.(()\[])인 경우 2\*(2+3) = 2\*2 + 2\*3로 풀 수 있다.초기에 ()는 2\[]는 3으로 변경해준다면 (23)으로 변경할 수 있다.(replaceAll 사용
문제 풀이는 아래와 같다.int map = new intH+1 로 초기화한 후. M개의 조건에서 map\[a]\[b] = 1, map\[a]\[b+1] = 2로 갱신한다.가로선은 연속해서 설치할 수 없기 때문에 b+1에 2로 이동할 방향을 표시할 수 있다.mapa =
각 좌표(i,j)에서 배열의 범위를 벗어나지 않는 선에서 (i+1,j-1), (i+1,j), (i+1,j+1)에 있는 값과의 합을 통해 구할 수 있는 최소값과 최대값을 구해야한다.valueMap = new int\[N]\[N]\[2]인 3차원 배열을 통해 배열의 아래부
1717 집합의 표헌 : https://www.acmicpc.net/problem/1717두 원소가 같은 집합에 있는지 여부를 판단하는 것을 보고 유니온 파인드 알고리즘을 떠올렸다.0일 때 a,b의 그룹을 같은 그룹으로 묶어주고, 1일 때 a,b의 그룹이 동일
1655 가운데를 말해요 : https://www.acmicpc.net/problem/1655PriorityQueue< Integer > max, PriorityQueue< Integer > min인 2개의 PQ를 가지고 주어진 수의 가운데 값을 구
1874 스택 수열 : https://www.acmicpc.net/problem/1874Stack에 들어있는 수를 pop하여 주어진 수열을 만들수 있는지 확인하는 문제.문제 풀이는 아래와 같다.stack.push()는 오름차순으로 한다고 했으니 1부터 N까지의
17298 오큰수 : https://www.acmicpc.net/problem/17298수열에서의 각 값의 오른쪽에 있는 수 중 해당 값보다 크고 왼쪽에 위치한 값을 반환하는 문제.문제 풀이 순서는 아래와 같다.각 수열의 오큰수를 저장할 int\[] answe
2493 탑 : https://www.acmicpc.net/problem/2493모든 탑은 왼쪽방향으로 레이저 신호를 보내고 신호를 보낸 탑보다 같거나 같은 탑에서만 수신할 수 있다.이것을 보고 송신을 보내는 탑의 왼쪽에는 자신보다 크거나 같은 탑만 있어야된다
1918 후위 표기식 : https://www.acmicpc.net/problem/1918꽤 복잡한 문제였다. 어떻게 건드려야할지 모르겠어서 다른 분의 풀이에서 힌트를 얻어 풀 수 있었다.힌트는 '피연선자는 바로바로 출력하고, 연산자는 저장해라'였다.후위연산자
멀쩡한 사각형 : https://school.programmers.co.kr/learn/courses/30/lessons/62048가로 w, 세로 h가 주어지고 꼭짓점에서 대각선 꼭짓점까지 선을 이었을때 선이 지나가는 정사각형을 제외한 나머지 정사각형의 개수를
124 나라의 숫자 : https://school.programmers.co.kr/learn/courses/30/lessons/12899주어진 n을 1,2,4로만 표현해야한다.1은 1, 2는 2, 3은 4로 표현가능하기 때문에 3진법과 비슷해보였다.1%3 =
두 큐 합 같게 하기 : https://school.programmers.co.kr/learn/courses/30/lessons/118667두개의 큐가 가지는 각각의 합이 동일하도록 만들어지도록 해야합니다.큐를 이동하는 총 횟수는 큐에 있는 모든 요소를 한바퀴
삼각 달팽이 : https://school.programmers.co.kr/learn/courses/30/lessons/68645삼각형이 n길이의 변과 n길이의 높이를 가질때, 상단 꼭짓점 부터 반시계방향으로 돌아 값을 채워넣어야 한다.해당 문제를 풀때 삼각형
2개 이하로 다른 비트 : https://school.programmers.co.kr/learn/courses/30/lessons/77885처음에 완탐으로 주어진 수 부터 1씩 늘려가며 비트로 바꾸고 다른 비트 개수를 새어서 찾는 식으로 구현했는데, 마지막 두
베스트 앨범 : https://school.programmers.co.kr/learn/courses/30/lessons/42579수록 기준1\. 많이 재생된 장르2\. 장르 내에서 많이 재생된 노래3\. 같은 장르내에서 많이 재생된 노래가 같다면 고유 번호가
코딩 테스트 공부 : https://school.programmers.co.kr/learn/courses/30/lessons/118668완탐으로 풀어보려고 했으나 코딩력이 부족해서 다른 분의 풀이를 보았다.DP를 이용해 Bottom Up으로 문제를 풀어가는 방
여행경로 : https://school.programmers.co.kr/learn/courses/30/lessons/43164 Problem Solve 연결된 공항을 한 줄로 줄세워 경로를 만들어야 하는 걸 보고 위상정렬을 먼저 떠올렸습니다. 위상정렬을 DFS를
주식가격 : https://school.programmers.co.kr/learn/courses/30/lessons/42584초마다 각 가격이 떨어지는지 확인하고 떨어졌을때 걸리는 시간을 구해야합니다.각 가격이 떨어지지 않는 값을 저장할 int\[] answe
모음 사전 : https://school.programmers.co.kr/learn/courses/30/lessons/845125개의 문자로 길이 5이하의 단어를 만들어 주어진 word의 순번을 반환하는 문제입니다.경우의 수가 5^1 + 5^2 + 5^3 +
교점에 별 만들기 : https://school.programmers.co.kr/learn/courses/30/lessons/87377각 직선에서의 교차점을 찾기 위해서 x와 y를 찾는것이 핵심이라 생각합니다.비교할 두 직선이 Ax+By+E=0, Cx+Dy+F
전력망 둘로 나누기 : https://school.programmers.co.kr/learn/courses/30/lessons/86971송전탑에 대한 인접리스트를 만들고 각 송전탑과 연결된 송전탑과의 연결을 끊기 위해 boolean 2차원 배열과 백트래킹을 사
110 옮기기 : https://school.programmers.co.kr/learn/courses/30/lessons/77886"110"을 찾아서 해당 문자열을 하나 제거하고 1이상인 문자열이 있다면 해당 문자열 앞에 "110" 추가, 문자열 뒷부분에 0이
최고의 집합 : https://school.programmers.co.kr/learn/courses/30/lessons/12938n개로 이루어진 중복 집합에서 n개의 요소 합이 s이고 요소의 곱이 최대가 되는 집합을 구하는 문제.이것 저것 건드려보다가 곱이 가
줄서는 방법 : https://school.programmers.co.kr/learn/courses/30/lessons/12936문제를 처음보고 완탐으로 Set에 줄 서는 방법을 넣고 정렬해서 가져올까 라는 생각을 했었습니다.하지만 제한사항의 k가 최대 20!
가장 큰 정사각형 : https://school.programmers.co.kr/learn/courses/30/lessons/12905첫번째 풀이에서는 특정 지점인 (i,j)에서 정사각형을 이루는 길이를 하나씩 늘려가며 해당 길이가 정사각형을 이루는지 확인하는
풍선 터뜨리기 2346 : https://www.acmicpc.net/problem/2346처음에는 배열을 이용해서 현재 index에서 move만큼 움직이되 boolean\[]을 이용해서 move만큼 한칸씩 이동하되 해당 풍선이 터져있는 곳이라면 움직임 카운트
단속카메라 : https://school.programmers.co.kr/learn/courses/30/lessons/42884차량의 진입 지점과 진출 지점을 비교해서 최소의 단속카메라로 모든 차량을 찍을 수 있도록 구현하는 문제.차량의 중복 지점을 찾기 위해
롤케이크 자르기 : https://school.programmers.co.kr/learn/courses/30/lessons/132265topping을 왼쪽과 오른쪽 두 부분으로 나누어 각 부분에 중복을 제외한 토핑의 종류 개수가 동일한 개수를 구하는 문제.포인
15565 귀여운 라이언 : https://www.acmicpc.net/problem/15565N개의 인형이 있고, K개의 라이언을 포함한 최소 집합 크기를 구하는 문제입니다.먼저 start, end 포인터를 정의하고 두 포인터 사이 K개의 라이언 인형이 포함
스티커 모으기(2) : https://school.programmers.co.kr/learn/courses/30/lessons/12971한번에 캐치못하고 다른 분들의 풀이에서 힌트를 보고 해결했던 문제입니다. (접근 방법을 생각하는 과정에서 DP를 배제해버렸었
방문길이 - https://school.programmers.co.kr/learn/courses/30/lessons/49994좌표 범위 안에서 이동하면서 중복되지 않는 이동을 반환하는 문제입니다.좌표의 이동자체는 쉽게 구현할 수 있지만, 중복되는 이동에 대해서
17073 나무 위의 빗물 : https://www.acmicpc.net/problem/17073문제를 이해하는데 조금 애먹긴했지만, 문제만 잘 이해하고 트리를 이해하고 있다면 쉽게 풀 수 있는 문제입니다.루트노드에서부터 W의 물이 자식노드로 1씩 이동하는데,
11403 경로 찾기 : https://www.acmicpc.net/problem/11403가중치 없는 방향 그래프가 주어졌을때, i정점에서 j정점까지 이동가능 여부의 배열을 반환하는 문제입니다.방향 그래프라는 단어를 못봐서 조금 방황하긴 했는데, 문제를 보고
연속합 13398 : https://www.acmicpc.net/problem/13398부분 연속합이 최대가 되는 값을 찾아야하는 문제입니다.이때, 연속되는 수 중 하나를 제거할수도 있기때문에 이를 해결하는것이 조금 까다롭습니다.먼저 연속된 합을 저장해주는 d
숫자게임 : https://school.programmers.co.kr/learn/courses/30/lessons/12987A와 B의 값을 비교해서 B가 큰 수의 최대 개수를 찾는 문제입니다.A와 B를 비교하기 위해 A와 B를 오름차순 정렬해줍니다. (크기를
1922 네트워크 연결 : https://www.acmicpc.net/problem/1922모든 정점을 연결할수 있는 최소의 가중치를 구하는 문제입니다.최소 스패닝 트리를 이용하여 문제를 해결할수 있습니다.또한 최소 스패닝 트리는 union find를 이용한
10866 덱 : https://www.acmicpc.net/problem/10866덱을 이용하여 각 명령을 처리하는 문제입니다.자바에서 제공하는 LinkedList나 ArrayDeque를 이용하여 풀수 있지만, 직접 구현해보겠습니다.그리고 동적할당을 위해 r
13549 숨바꼭질 3 : https://www.acmicpc.net/problem/13549현재 수빈이의 위치에서 한칸씩 이동한다면 1초의 시간이 걸리고, 순간이동으로 이동한다면 0초의 시간이 걸리게됩니다.현재 수빈이의 위치에서 이동할 수 있는 모든 경우의
1629 곱셈 : https://www.acmicpc.net/problem/1629단순하게 생각했을때 A를 B번 곱해서 C로 나눈 나머지를 구한다. 라고 생각할 수 있지만 B는 최대 21억이 넘는 값을 가지기 때문에 이러한 방법은 시간 초과가 발생합니다.다른
1074 Z : https://www.acmicpc.net/problem/1074재귀로 풀어야할것같다는 접근은 하였지만, 구현에서 많이 애먹었던 문제였습니다.나름 재귀로 풀어본다고 풀어봤지만, 다른 분들의 풀이를 보니, 접근만 했었지 방법은 틀렸었습니다ㅋㅋ먼저
14501 퇴사 : https://www.acmicpc.net/problem/14501해당 문제는 브루트포스로 풀 수 있고, DP로도 풀 수 있는 문제입니다.기억은 안나지만 전에 브루트포스로 풀은 경험이 있길래 DP로 풀어보겠습니다. (점화식을 못구해서 다른
1695 팰린드롬 만들기 : https://www.acmicpc.net/problem/1695접근 방법도 생각을 못했습니다.DP로 풀수있다는 것에 신기했습니다.주어진 수열에서 수를 끼워넣을 수 있는데, 끼워넣는 개수가 최소가 되어야합니다.재귀를 통해 어떤 수를
array manipulation : https://www.hackerrank.com/challenges/one-month-preparation-kit-crush/problem?isFullScreen=true&h_l=interview&playlist_slugs
귤 고르기 : https://school.programmers.co.kr/learn/courses/30/lessons/138476k개의 귤을 판매하려고할 때 귤의 종류를 최소한으로 하기 위해서는 귤의 개수가 많은 귤을 차례로 선택하는 방법이 있습니다.Trang
행렬의 곱셈 : https://school.programmers.co.kr/learn/courses/30/lessons/12949출처행렬의 곱이란 특정 행과 열이 있을때, arr1의 행 값들과 arr2의 열 값들의 곱의 합을 구하는 것입니다.행렬의 곱이 성사되
가장 긴 팰린드롬 : https://school.programmers.co.kr/learn/courses/30/lessons/12904다른 분들의 풀이를 보니 대부분 구현으로 푸시긴 하였지만, DP로 풀 수 있을것 같아 DP로 도전해보았지만 해결이 안되어 다른
쿼드압축 후 개수 세기 : https://school.programmers.co.kr/learn/courses/30/lessons/68936주어진 2차원 배열에서 1,2,3,4 사분면으로 분리하여 해당 범위에 모두 동일한 값을 가지고 있다면 해당 값을 +1로
숫자 블록 : https://school.programmers.co.kr/learn/courses/30/lessons/12923도로에서 begin부터 end까지 설치된 블록을 반환하는 문제입니다.조건도로의 총 길이는 최대 10억end-begin의 길이는 최대
18870 좌표압축 : https://www.acmicpc.net/problem/18870Map을 이용한 방식과 BinarySearch 두가지 방법을 이용하여 풀이를 해보았습니다.주어진 숫자들을 정렬을 수행하고 이전에 있는 값과 비교하여 이전값보다 크다면 배열
2230 수고르기 : https://www.acmicpc.net/problem/2230두 수의 차가 M이상이면서 가장 작은 값을 찾는 문제입니다.이분탐색과 투포인터 두 가지 방법으로 문제를 해결할 수 있습니다.이분탐색과 투포인터는 모두 정렬된 상태에서 수행해주
7662 이중 우선순위 큐 : https://www.acmicpc.net/problem/7662TreeMap으로 구현이 가능하지만 많은 분들이 풀어서, 최대힙과 최소힙을 이용하여 문제를 구현하였습니다.최대힙, 최소힙을 이용하여 풀때 두 힙을 동기화 시켜주는 것
2252 줄 세우기 : https://www.acmicpc.net/problem/2252A와 B가 주어진다면 A가 B보다 앞에서야 합니다. B에 대해 먼저 나와야하는 순서가 있고 답이 여러가지인 경우 아무거나 출력해도 되기때문에 위상정렬을 생각하였습니다.1차원
20300 서강 근육맨 : https://www.acmicpc.net/problem/20300운동기구는 최대 두개까지만 선택할 수 있습니다.두개의 운동기구를 선택했을때, 두 합의 최대가 최소가 되도록하는 M을 찾아야합니다.두 합의 크기가 최소가 나오게하기 위해
보행자 천국 : https://school.programmers.co.kr/learn/courses/30/lessons/1832자동차의 이동은 배열을 기준으로 아래와 오른쪽으로만 이동이 가능합니다.그리고 목적지까지 이동이 가능한 경로 개수를 구해야하는데, ci
점 찍기 : https://school.programmers.co.kr/learn/courses/30/lessons/140107(x,y)에 대해서 원점부터의 길이는 d^2 = x^2 + y^2의 공식으로 구할 수 있습니다.이를 통해서 y가 0일때, x가 d보다
N-Queen : https://school.programmers.co.kr/learn/courses/30/lessons/129522차원 배열로 완전탐색을 이용하여 문제를 구현하려하였으나, 시간초과와 구현이 잘 되지 않아서 다른분의 풀이를 참고하였습니다.일단
11404 플로이드 : https://www.acmicpc.net/problem/11404제목 자체가 '플로이드'라고 표시되어있어 플로이드와샬이라고 접근할 수 있습니다.하지만 문제를 보고 접근해보자면 A에서 B도시로 접근하는데 필요한 최솟값을 구해야합니다. A
1929 소수 구하기 : https://www.acmicpc.net/problem/1929에라토스테네스의 체를 이용한 문제입니다.에라토스테네스의 체는 2부터 M까지의 수 중 소수를 찾아낼수 있는 방법입니다.어떠한 수가 주어졌을때, 해당 수가 소수라면, 자신의
11729 하노이 탑 이동 순서 : https://www.acmicpc.net/problem/11729 재귀함수를 이용한 문제입니다.1에서 N순으로 판을 옮겨야 하는것에 초점을 맞춰서 접근하였는데 해결이되지 않아 다른 분의 풀이에서 N부터 접근해야한다는 힌트를
1202 보석 도둑 : https://www.acmicpc.net/problem/1202주어진 보석과 담을 수 있는 가방을 모두 비교하여 최대값을 구할 수 있지만, O(N^2)의 시간복잡도가 발생하기 때문에 시간초과가 발생하게됩니다.가방이 담을 수 있는 무게가
9663 N-Queen : https://www.acmicpc.net/problem/9663Queen이 서로 공격할 수 없는 모든 경우의 수를 찾아야하는 문제입니다.위와 같이 N=4인 2차원배열에서 Queen이 놓여져있다면 각 퀸들이 서로를 공격할 수 없는 경
18808 스티커 붙이기 : https://www.acmicpc.net/problem/18808스티커를 노트북의 왼쪽 위부터 탐색하며 다른 스티커와 겹치지 않는 부분에 붙여주고 모두 확인하였을때 붙일곳이 없다면, 스티커를 90, 180, 270도로 회전시키며
13164 행복 유치원 : https://www.acmicpc.net/problem/13164처음 풀이는 이분탐색을 이용하여 최소가 되는 비용을 찾도록 그룹을 만들어주도록 구현하였습니다.하지만 그룹에서 최소의 값을 찾아주는데 구현의 어려움이 있었고 다른 분의
업무 처리 : https://softeer.ai/practice/info.do?idx=1&eid=1256문제를 이해하는데 많은 시간이 소요된 문제였습니다.문제를 요약하자면말단 직원은 각 날짜에 남은 업무가 있다면 하나씩 작업을 수행하여 상사에게 작업을 올립니다
금고털이 : https://softeer.ai/practice/result.do?eventIdx=1&submissionSn=SW_PRBL_SBMS_125927&psProblemId=395보석을 각각 비교하게된다면 시간초과가 발생하기 때문에 가방에 들어갈 보석들
성적 평가 : https://softeer.ai/practice/info.do?idx=1&eid=13093개의 대회에서 등수와 총 등수를 구해야하는 문제입니다.먼저 각 대회에서의 점수를 얻은 후 참가자와 참가자의 등수를 담은 우선순위 큐를 만들어줍니다.총 등수
2623 음악프로그램 : https://www.acmicpc.net/problem/2623순서를 정해야하는데, 순위에 먼저 수행해야하는 우선순위가 있다면, 위상정렬을 고려해보아야합니다.위상정렬에서 먼저 수행되어야할 것의 여부를 알기 위해서는 indegree를
12100 2048(Easy) : https://www.acmicpc.net/problem/12100보드의 블럭을 상,하,좌,우 이동시키면서 같은 값을 가지는 블럭을 만났을때 블럭을 합쳐 보드에서 최대의 값을 반환하는 문제입니다.가장 많이 고민했던 부분은 블럭
좌석관리 : https://softeer.ai/practice/info.do?idx=1&eid=625Map<String, int\[]> eatPos를 사용하여 현재 먹고 있는 사원의 위치를 저장합니다.boolean\[] isAlreadyEat을 사용하여
회의실 배정 : https://softeer.ai/practice/info.do?idx=1&eid=626&sw_prbl_sbms_sn=143458Map<String, ArrayList<int\[]>> map을 통해 회의실 이름을 key로 하여 시작시
인사고과 : https://softeer.ai/practice/info.do?idx=1&eid=630문제를 처음 보았을때 각 난이도에 하나씩 값을 넣어보는 완전탐색밖에 생각이 나지 않았습니다. 하지만 제약조건에서 ci, di가 10^12인것을 보고 완전탐색은