https://programmers.co.kr/learn/courses/30/lessons/81301대부분의 탐색 방법들은 탐색 키를 저장된 키 값과 반복적으로 비교하면서 탐색을 원하는 항목에 접근한다. 반면 해싱은 키 값에 직접 산술적인 연산을 적용하여 항목
https://www.acmicpc.net/problem/16165
✔ bitonic함수는 배열을 인자로 받아서 그 배열이 바이토닉 수열이면 true를 반환하는 함수이다. ✔ slice로 인덱스 j부터 k까지 배열을 자르고 그안의 배열이 바이토닉 수열인지 미리 구현해놓았던 bitonic 함수에 인자로 넣어 true이고 수열의길이가 3이
https://programmers.co.kr/learn/courses/30/lessons/42578✔ 의상 조합의 수를 구하기 위해서는 의상의 종류별로 의상이 몇개가 있는지 확인해야 한다.✔ 의상의 종류를 key값으로 해당 종류에 해당하는 옷의 개수를 val
https://programmers.co.kr/learn/courses/30/lessons/42579✔ sum_play : 장르이름, 그장르의 play수의 합을 저장하는 map ✔ play_index : (play수,index) 장르이름을 저장하는 map ✔
https://programmers.co.kr/learn/courses/30/lessons/42746✔ 기본적으로 정렬을 이용하는 문제✔ .sort()는 return하는 값이 양수이면 순서를 그대로 유지하고 음수이면 순서를 바꿔준다.💡 문자열을 그대로 연결한
https://programmers.co.kr/learn/courses/30/lessons/42586✔ 전형적인 stack 자료구조를 이용하여 푸는 문제이다.✔ stack의 끝에서부터 첫번째 progress가 끝나는데 걸리는 일 수를 저장한다.✔ Math.c
https://programmers.co.kr/learn/courses/30/lessons/67258✔ 사용한 알고리즘 : 투포인터 + Hashing✔ hash1은 Map()으로 선언하여 보석의 모든 종류를 hash1.size로 체크✔ gems 의 시작점을 l
https://www.acmicpc.net/problem/1339✔ 알고리즘 : Hashing을 통한 그리디 알고리즘✔ 이중 for문을 돌면서 hash_map에 현재 알파벳의 계수를 저장ex) ABC -> 100A + 10B + 1C✔ 현재 hash_map에는
https://programmers.co.kr/learn/courses/30/lessons/42884✔ 알고리즘 : 그리디 ✔ 고속도로를 나간 지점 기준 오름차순 정렬✔ 카메라는 무조건 나간 지점에만 설치✔ 배열의 다음값의 시작점과 현재 마지막 카메라의 위치
우선순위 큐(Priority Queue)는 높은 우선순위를 가진 원소는 낮은 우선순위를 가진 원소보다 먼저 처리되는 자료구조이다.큐는 선형 자료구조이고, 우선순위 큐는 비 선형 자료구조이다. 우선순위 큐는 자료가 들어온 순서와 상관 없이 미리 정한 우선순위대로 나간다.
https://www.acmicpc.net/problem/2606✔ 알고리즘 : DFS✔ 간선의 정보를 입력받아서 그래프를 생성✔ 1번 노드부터 바이러스 걸리므로 visited1 = 1 ✔ 1번 노드를 dfs의 시작점으로 하여 dfs탐색✔ 방문하지 않은 노드가
https://programmers.co.kr/learn/courses/30/lessons/43165✔ 알고리즘 : DFS✔ 레벨을 증가시켜주면서 numberslevel을 더하는 경우, 빼는 경우로 dfs 두번 탐색❗ numbers 배열에 있는 모든 수를 활용
https://programmers.co.kr/learn/courses/30/lessons/43162✔ 알고리즘 : DFS✔ 노드 방문 처리를 위한 1차원 배열 visited 선언✔ computersstart 가 1 이면 start 노드에서 i 노드가 이어져있
https://www.acmicpc.net/problem/1697✔ 알고리즘 : BFS✔ 수빈이는 +1 -1 \*2 세가지 경로로 움직일 수 있으므로 큐에 넣을 때 3개를 각각 넣어준다✔ 처음으로 위치가 k인 경우가 동생에게 갈 수 있는 최소 이동 횟수✔ 시간
https://www.acmicpc.net/problem/10026✔ 알고리즘 : BFS✔ bfs함수를 작성하여 x,y에서 출발해서 주변의 모든 arrx색깔을 방문하고 방문했던 좌표는 check를 1로 바꾼다✔ arr의 모든 좌표가 check가 1이 되야 모든
https://www.acmicpc.net/problem/2109✔ 알고리즘 : 우선순위 큐를 사용한 그리디✔ 자바스크립트에는 heap을 통해 우선순위 큐를 구현✔ 우선 deadline기준으로 오름차순 정렬✔ time을 1로 설정하고 minheap으로 구현한
https://programmers.co.kr/learn/courses/30/lessons/43238✔ 알고리즘 : 이분탐색✔ 심사관마다 걸리는 시간인 times 배열 오름차순 정렬✔ left=1, right= 제일오래걸리는 심사관한테 모두가 검사받는 시간✔
https://www.acmicpc.net/problem/7562✔ 알고리즘 : BFS✔ 나이트가 이동할 수 있는 방향은 8가지이므로 dx,dy에 8개값을 넣는다✔ input으로부터 받은 start_x,start_y값을 큐에 집어넣으면서 BFS탐색 시작✔ bo
https://www.acmicpc.net/problem/1806✔ 알고리즘 : 투포인터💡 sum>=m이 되는 순간 구간합이 m 이상되는 구간이되므로 ans에 Math.min함수를 통하여 작은 구간의 길이를 저장하고 최소구간을 찾아야하므로 arrleft값을
https://www.acmicpc.net/problem/1644✔ 알고리즘 : 투포인터✔ 에라토스테네스의 체를 이용하여 입력값 n까지의 모든 소수를 primes 배열에 저장✔ primes 배열에서 left,right를 index 0으로 놓고 투포인터탐색 시작
https://www.acmicpc.net/problem/17298✔ 알고리즘 : 스택✔ 배열의 뒤에서 부터 스택에 집어넣는다✔ stack에 아무것도 없으면 ans에 -1 저장후 push✔ stack의 top이랑 비교해서 큰값을 찾을때까지 pop 하여 ans에
https://www.acmicpc.net/problem/2941✔ 알고리즘 : 문자열✔ 풀이 1 : 정규표현식 (위의 코드 참고), result.length로 답출력✔ 풀이 2 : if else 조건식으로 크로아티아 알파벳으로 바꿀 수 있는지 판별❗ 크로아티
대부분의 탐색 방법들은 탐색 키를 저장된 키 값과 반복적으로 비교하면서 탐색을 원하는 항목에 접근한다. 반면 해싱은 키 값에 직접 산술적인 연산을 적용하여 항목이 저장되어 있는 테이블의 주소를 계산하여 항목에 접근한다. 이렇게 키 값의 연산에 의해 직접 접근이 가능한
배열 마지막값을 삭제배열 마지막에 값 삽입배열 처음(인덱스0)에 값 삽입배열의 특정위치에 요소를 추가하거나 삭제splice( 시작 index, 제거할 요소 개수, 배열에 추가될 요소 )배열의 startIndex부터 endIndex까지(endIndex는 포함❌)에 대한
https://www.acmicpc.net/problem/5557✔ 알고리즘 : 2차원 DP✔ dpi : i번째 인덱스까지 사용하여 j를 만드는 경우의 수✔ N번째 경우의 수는1)N-1번째에 구한 경우의 수에서 다음 숫자를 더했을 때 20보다 작거나 같고2)N
https://www.acmicpc.net/problem/11724✔ 알고리즘 : DFS✔ 양방향 그래프이므로 간선 정보를 받아서 서로의 연결그래프에 추가해준다✔ 방문한 정점을 알 수 있는 visited 배열을 false로 초기화시켜놓는다✔ 전체 정점을 for
https://www.acmicpc.net/problem/1260✔ 알고리즘 : DFS / BFS✔ 간선의 정보를 입력받아 인접리스트를 통해 그래프로 구현✔ 양방향 그래프이므로 a,b를 입력받으면 a,b각각 b,a를 추가해줘야함✔ visited배열로 노드를 탐
https://www.acmicpc.net/problem/1072✔ 알고리즘 : 이분탐색✔ 문제의 조건에서 앞으로의 모든게임에서 지지 않는다고 했으므로 새로운 확률을 계산할 때 분모와 분자에 각각 mid를 더해줘서 계산해야함✔ 처음확률과 현재확률이 달라지는 순
https://www.acmicpc.net/problem/1987✔ 알고리즘 : DFS, 백트래킹✔ 같은 알파벳은 다시 방문하면 안되므로 좌표로 visit 배열을 설정하지 않고 알파벳의 개수대로 visit 배열을 설정하였다.✔ 첫번째 칸인 board0에서 시작
https://programmers.co.kr/learn/courses/30/lessons/42888✔ 알고리즘 : 문자열 + Hashing✔ 이름은 결국 ID를 따라가므로 tmp에 ID를 저장한후 마지막에 변환하여 출력하는게 문제를 푸는 핵심이다✔ Leave
https://www.acmicpc.net/problem/2667✔ 알고리즘 : BFS✔ BFS함수를 실행한 횟수가 구역의 수✔ 방문체크를 위한 배열을 선언하고 boardi가 1인데 방문처리가 안된집에서 부터 BFS탐색을 시작✔ 구역안에서 queue에 push
https://www.acmicpc.net/problem/1927✔ 알고리즘 : 자료구조(min heap)✔ min heap으로 구현하였으므로 제일 작은값이 우선순위가 제일 높음✔ x가 0인 경우에만 get함수로 minheap에서 꺼내준다✔ 난이도 : 백준 기
https://www.acmicpc.net/problem/22115✔ 알고리즘 : DP✔ dpi 는 dp카페인로 현재 커피종류수(j)로 카페인(i)을 만들 수 있는 최소한의 커피 종류수라고 설정했다.✔ 커피의 종류는 최대 100종류이므로 101로 초기화✔ 카페
https://www.acmicpc.net/problem/18353✔ 알고리즘 : DP✔ 가장 긴 감소하는 부분수열의 개수를 만들기 위해 제거해야하는 병사의 수를 구하는 문제이다✔ reverse함수를 통해 수열을 뒤집고 가장 긴 증가하는 수열의 개수를 DP를
https://www.acmicpc.net/problem/1890✔ 알고리즘 : DP✔ DPi = (i,j) 좌표 까지 갈 수 있는 경로의 경우의 수 ✔ arri가 0이면 진행을 막는 종착점이므로 continue✔ i(행이동,아래로 점프)를 이동했을때 범위를
https://www.acmicpc.net/problem/16120✔ 알고리즘 : 스택✔ 문자열을 스택에 입력받고 P를 입력받았을 때 현재의 P가 PPAP의 마지막 P인지 확인하고 마지막 P이면 PPAP를 P로 바꾸어 스택에 넣어준다✔ 마지막 스택의 원소수가
https://www.acmicpc.net/problem/13913✔ 알고리즘 : BFS✔ 기존의 숨바꼭질 문제에서 경로만 추가하여 출력해주면 되는 문제이다.✔ 경로를 추적하기 위해 path 배열을 생성하였고 x위치에서 파생되는 nx로 이동가능 하다면 path
https://www.acmicpc.net/problem/2343✔ 알고리즘 : 이분탐색✔ 블루레이의 크기를 mid라고 했을 때 arr배열을 처음부터 돌면서 합이 mid를 넘기전까지 묶으면 된다. 만약 mid를 넘으면 cnt를 1증가시켜주고 sum을 arr의
https://www.acmicpc.net/problem/22862✔ 알고리즘 : 투포인터✔ 홀수인 경우가 k개이하로 포함되도록 하는 부분수열의 최대길이를 구하는 문제이다✔ 두개의 포인터를 0에서부터 시작하면서 투포인터 탐색을 한다✔ right포인터 인덱스가
https://www.acmicpc.net/problem/1931✔ 알고리즘 : 그리디✔ 끝시간 기준으로 정렬하여 시간이 안겹치게 카운트해주면 된다.❗ 정렬할 때 시작시간을 고려하지 않고 끝시간만을 고려하여이런식으로 정렬을 해서 풀었더니 88%쯤에서 틀렸습니다
https://www.acmicpc.net/problem/2470✔ 알고리즘 : 투포인터✔ 용액의 값이 주어졌을 때 두개의 용액을 섞어서 0에 제일 가까운용액을 만들어야 하는 문제이다.✔ 용액을 오름차순 정렬한다✔ left는 index 0, right는 ind
https://www.acmicpc.net/problem/2812✔ 알고리즘 : 스택✔ 문자열을 배열로 만든 후 배열을 탐색하며 스택의 상단과 비교✔ 지울 수 있는 횟수(cnt)가 양수이고 상단과 비교했을 때 현재 수가 더 큰 경우 스택의 상단 pop✔ 상단이
https://www.acmicpc.net/problem/1463✔ 알고리즘 : DP✔ dpi = i가 되는데 필요한 연산의 최소값으로 정의✔ i를 2부터 시작해서 n까지 증가시키며 dp값을 갱신한다.✔ i-1에서 1을 더한값을 dp값에 넣고 2,3으로 나누어
https://www.acmicpc.net/problem/5014✔ 알고리즘 : BFS✔ 이동횟수의 최소값을 구하는 문제✔ 이미 도착한 층을 visited 배열을 통해 검사하였다.❗ 주의 : 음수층과 건물의 총높이를 벗어나는 층은 도달할 수 없다✔ 난이도 :
https://www.acmicpc.net/problem/1918✔ 알고리즘 : 자료구조(stack)✔ 괄호와 연산자에 대한 우선순위를 생각하면서 풀어야하는 문제✔ 괄호를 열고 닫을때, 연산자가 들어올때만 스택에서 원소를 넣고 빼는 작업을 해야 한다.✔ 대문자
https://www.acmicpc.net/problem/9935✔ 알고리즘 : 스택✔ 주어진 문자열에서 폭발 문자열을 제거하는 문제✔ 문자열을 순회하며 현재 인덱스의 문자가 폭발문자열의 끝문자와 같은지 비교✔ 같으면 폭발문자열의 index(폭발문자열의 길이-
https://www.acmicpc.net/problem/1744✔ 알고리즘 : 그리디✔ 우선 수열의 수를 받을 때 경우의 수를 4가지로 나누었다.1이 들어올 때1은 모든 다른 수와 곱했을 때 더하는 값보다 작아지게 된다. 따라서 무조건 더해야 하는 수이므로
https://www.acmicpc.net/problem/14676✔ 알고리즘 : 위상정렬✔ 간선 정보를 입력받으면서 graph를 구현하고 indegrees 배열을 통해 어떠한 건물이 건설하기 위해 필요한 이전 건물의 수를 저장한다.✔ 정보를 탐색a가 1 인
https://www.acmicpc.net/problem/2056✔ 알고리즘 : 위상정렬 + DP✔ 간선이 어떠한 작업을 하기 위해 필요한 작업이라고 생각하고 그래프를 만든다. 간선을 추가할 때마다 도착점의 indegrees를 1증가✔ 큐를 생성하여 선행관계가
https://www.acmicpc.net/problem/2170✔ 알고리즘 : 정렬✔ x좌표를 기준으로 오름차순 정렬한다.✔ cur은 현재 직선의 끝점을 가르킨다. 첫번째 직선의 y좌표를 cur로 지정한 후 탐색을 시작한다.✔ 현재 직선의 x좌표가 cur보다
https://www.acmicpc.net/problem/5582✔ 알고리즘 : DP✔ 배열을 만들어서 모든 값을 0으로 초기화한다.✔ 기존의 공통 문자열 문제에서는 연속된 이라는 조건이 없었기 때문에 max메서드를 통해 계속 갱신했어야 했다.✔ 이 문제는 연
https://www.acmicpc.net/problem/15729✔ 알고리즘 : 그리디✔ 버튼이 눌릴때마다 배열을 갱신을 안해주는 것이 포인트이다.✔ 버튼을 누르면 오른쪽의 두 개 버튼도 눌린다.✔ 0으로 초기화된 배열과 쪽지에 적혀져있는 배열을 비교하며 다
서로소 집합(Disjoint-Set) 알고리즘이라고도 불리는 알고리즘으로 구체적으로 여러 개의 노드가 존재할 때 두 개의 노드를 선택해서, 현재 이 노드가 서로 같은 그래프에 속하는지 판별하는 알고리즘입니다.❓ Disjoint-Set(서로소 집합) 이란 무엇일까요?👉
https://programmers.co.kr/learn/courses/30/lessons/81302✔ 알고리즘 : 완전탐색 + 구현✔ 반례를 통하여 거리두기가 지켜지는지 검사하였다.✔ 위반되는 case 1 P를 만났을 때 4방향(상하좌우) 탐색하여 P를 만나
https://programmers.co.kr/learn/courses/30/lessons/17677✔ 알고리즘 : 문자열 + 구현✔ 입력받은 두 개의 문자열을 toLowerCase 메서드를 사용하여모두 소문자로 변경한다. ✔ str1, str2를 순회하며 앞
https://leetcode.com/problems/capacity-to-ship-packages-within-d-days✔ 알고리즘 : 이분탐색✔ arr에는 각 박스의 무게가 들어가있는 배열이다. 컨베이어 벨트의 모든 포장이 k일 이내에 발송될 수 있도록
https://programmers.co.kr/learn/courses/30/lessons/64065✔ 알고리즘 : 문자열✔ slice 메서드를 사용하여 앞뒤의 중괄호를 2개씩 제거해준다.✔ split 메서드를 사용하여 },{를 기준으로 str배열에 넣는다.✔
https://www.acmicpc.net/problem/11054✔ 알고리즘 : DP✔ 구해야 하는 최대길이의 바이토닉 수열을 구하려면 처음부터 현재 index까지의 증가수열의 길이와 현재 index부터 마지막까지의 감소수열의 길이를 알아야 한다.✔ 증가수열
https://www.acmicpc.net/problem/12904✔ 알고리즘 : 문자열 ✔ 입력값으로 받는 두 문자열을 각각 a, b라 했을 때 a에서 문자열을 추가해서 b를 만드는 문제이지만 나는 b에서 문자열을 삭제해서 a로 만드는 방식으로 접근하였다.✔
https://www.acmicpc.net/problem/11403✔ 알고리즘 : 플로이드-와샬✔ 경로가 존재하는지 확인하는 플로이드 와샬 문제이므로 3중 for문을 통해 i로부터 j까지의 경로가 존재하는지 확인✔ 난이도 : 백준 기준 실버 1
https://www.acmicpc.net/problem/19583✔ 알고리즘 : 구현✔ 시간계산을 편하게 하기 위해 : 를 구분자로 하여 나누고 시간에 100을 곱한 후 분을 더해주었다.✔ 중복을 방지하기 위해 set 자료구조를 사용하였다.✔ 개강총회 시작
https://www.acmicpc.net/problem/16472✔ 알고리즘 : 투포인터✔ left, right 포인터를 0으로 초기화 시키고 str을 순회한다.✔ 알파벳의 종류와 해당 알파벳의 개수를 저장하기 위해 map 자료구조를 사용하였다.✔ right
https://www.acmicpc.net/problem/2589✔ 알고리즘 : BFS✔ arr을 2중 for문으로 돌면서 육지인 경우 bfs탐색✔ visted 배열을 통해 현재 정점이 방문한 점인지 체크✔ bfs 탐색 시 이동할때마다 vistedny 를 1씩
https://www.acmicpc.net/problem/2146✔ 알고리즘 : BFS / DFS✔ 우선 대륙끼리의 최단경로를 찾기전에 대륙의 구역을 나눠야 한다.나눠진 구역은 dfs함수 내에서 board값이 고유한 대륙의번호로 저장된다.✔ 구역을 나눴으므로
https://www.acmicpc.net/problem/2631✔ 알고리즘 : DP✔ 사람을 이동시켜서 순차적으로 배치시켜야 하는 문제이다✔ 현재 순차적으로 배치되어있는 최대 부분수열의 길이를 구하고 전체 사람 수에서 빼면 최소로 움직여서 배치할 수 있는 경
https://www.acmicpc.net/problem/21758✔ 알고리즘 : 그리디✔ 가능한 경우의 수는 총 3가지이다꿀통 ~ 벌 ~ 벌이 경우 꿀통은 맨 왼쪽, 두번째 벌은 맨 오른쪽에 배치를 해야 최대의 꿀을 딸 수 있다. 따라서 첫번째 벌을 움직이면
https://www.acmicpc.net/problem/21608✔ 알고리즘 : 구현✔ checked라는 배열을 통해 자리배치를 하였다.0번째 index : 인접한 칸의 좋아하는 학생 수1번째 index : 인접한 칸중 비어있는 자리 수2번째 index :
https://www.acmicpc.net/problem/2615✔ 알고리즘 : 구현(브루트포스)✔ 현재 칸이 1과 2일때만 check함수를 통해 오목여부를 판단✔ 답으로 출력해야 하는 좌표가 다섯 개의 바둑알 중에서 가장 왼쪽에 있는 바둑알이므로 현재 좌표에
https://www.acmicpc.net/problem/15686✔ 알고리즘 : 구현 ( DFS + 구현 )✔ 좌표를 돌면서 집과 치킨집의 좌표를 각각 배열에 저장한다.✔ DFS탐색을 통해 치킨집의 조합을 구한다. 선택된 치킨집은 check배열을 true로
https://www.acmicpc.net/problem/2504✔ 알고리즘 : 구현 + 스택✔ 끝나는 괄호가 들어오는데 stack이 비어있는 경우는 불가능한 경우이므로 0을 출력한다.✔ (나 \[와 같이 시작하는 괄호가 들어올 때는 무조건 stack에 pus
https://www.acmicpc.net/problem/5430✔ 알고리즘 : 문자열 + 구현✔ Reverse 처리를 어떻게 해주는지가 관건인 문제인 것 같다. R을 입력받을때마다 배열을 뒤집는 것이 아닌 현재 나온 R의 개수에 따라 처리해야 시간초과가 뜨지
https://www.acmicpc.net/problem/16234✔ 알고리즘 : BFS + 구현✔ 0,0부터 2중 for문을 통해 순회하며 국경선을 열 수 있는지를 판단한다. ✔ visitedRecord 배열을 통해 현재 국경이 열려져있는, 즉 이어져있는 도
https://www.acmicpc.net/problem/1967✔ 알고리즘 : BFS✔ 트리의 지름 : 무작위의 점에서 가장 멀리 있는 점을 구한뒤, 그 점에서 한번 더 가장 멀리있는 점과의 거리✔ s노드로 부터 가장 먼 노드의 정보를 return 하는 bf
https://www.acmicpc.net/problem/14502✔ 알고리즘 : BFS / DFS + 구현✔ 내가 풀이한 방법벽3개 설치 👉 벽개수가 3개가 되었을 때 바이러스 퍼뜨리기 👉 안전영역 개수 카운팅백트래킹으로 벽 3개 설치 (DFS)벽개수 3
https://www.acmicpc.net/problem/7569✔ 알고리즘 : BFS + 구현✔ 3차원 배열의 bfs 문제이다. 방향을 6개로 지정하여 탐색하였다.✔ 전파가능한 토마토들은 queue에 집어넣고 탐색을 시작하였다.✔ bfs탐색을 하며 남은 토마
https://www.acmicpc.net/problem/1759✔ 알고리즘 : 백트래킹 + 브루트포스✔ 조합 문제로 조건으로는 모음이 1개 이상, 자음이 2개 이상인 문자열을 조합하는 문제✔ 백트래킹을 통해 문자열을 만들어 나간다. 길이가 L이 되었을 때 조
https://programmers.co.kr/learn/courses/30/lessons/72411?language=javascript✔ 알고리즘 : 구현✔ 조합을 통해 메뉴를 정하고 그 메뉴를 포함하고 있는 사람 수를 카운팅하여 문제를 풀어야 한다✔ 메뉴
https://www.acmicpc.net/problem/1915✔ 알고리즘 : DP✔ arri가 0인 경우는 어떠한 경우로도 정사각형을 만들 수 없으므로 continue✔ 그 외에는 길이가 1이라도 무조건 정사각형을 만들 수 있는 경우✔ 해당좌표 (i,j)
https://www.acmicpc.net/problem/14891✔ 알고리즘 : 구현✔ 재귀를 사용하여 시작점 톱니바퀴의 전, 후 톱니바퀴를 회전시켜야 하는 문제✔ 전, 후 톱니바퀴 확인❗ 톱니바퀴끼리 넘어갈때는 direction이 항상 바뀐다.✔ 회전시키는
https://www.acmicpc.net/problem/1013✔ 알고리즘 : 문자열 (정규표현식)✔ str을 index로 순회하며 1인 경우와 0인 경우로 나누어서 판단✔ 1인 경우1인 경우 뒤에 무조건 00이 와야함 아닌 경우, false 반환 👉 10
https://www.acmicpc.net/problem/2116✔ 알고리즘 : 구현✔ pair 배열을 통해 마주보는 면을 미리 정의✔ 맨 아래 주사위에서 윗면을 고르는 경우의 수 6가지로 부터 출발 (i for문)✔ 위아래 면을 제외한 제일 큰 수 고르기 (
https://www.acmicpc.net/problem/10942✔ 알고리즘 : DP✔ 길이가 3이상인 (index 범위가 start ~ end) 부분문자열의 팰린드롬 판단을 하기 위해서는 start와 end의 값이 같은지, start+1 ~ end-1 부분
https://www.acmicpc.net/problem/2573✔ 알고리즘 : 구현 + DFS✔ time 변수를 설정하여 while 반복문 안에서 현재 칸에 0이 아닌 수라면 주변에서 0인 지역의 개수를 카운트해서 around 배열에 저장한다.✔ arri -
https://www.acmicpc.net/problem/2206✔ 알고리즘 : 구현 + BFS✔ 기존의 bfs문제와 다른점은 벽을 부실수 있다는 조건때문에 visited 배열을 N \* M의 2차원 배열이 아닌 벽을 부수고 N,M좌표로 가는 경우와 안부수고
https://www.acmicpc.net/problem/2002✔ 알고리즘 : 구현✔ map 자료구조를 사용하여 차량정보가 들어오면 index를 해당 차량의 번호로 생각하여 저장하였다. (0~N-1) ✔ 해당 차량 번호가 터널을 빠져나갔는지 안나갔는지는 vi
https://leetcode.com/problems/alert-using-same-key-card-three-or-more-times-in-a-one-hour-period/✔ 알고리즘 : 구현✔ Map 자료구조를 사용하여 사용자 이름에 따른 입장시간을 기록하
https://programmers.co.kr/learn/courses/30/lessons/12929?language=javascript✔ 알고리즘 : DFS✔ n개의 쌍으로 올바른 괄호열을 만들어야 한다. 올바른 괄호열은 여는 괄호 닫는 괄호가 같고 여는 괄
https://www.acmicpc.net/problem/1707✔ 알고리즘 : BFS✔ ❓ 이분 그래프란2가지 색으로 꼭짓점을 칠할 때 모든 변의 두 꼭짓점의 색깔이 달라야 이분 그래프이다.✔ visited 배열을 통해 현재 색깔이 칠해져있는지 (1,2) 아
https://www.acmicpc.net/problem/3055✔ 알고리즘 : BFS✔ 입력을 받으면서 시작지점과 끝지점을 sX,sY,eX,eY에 저장하고 물은 waterQueue라는 배열에 넣는다.✔ 항상 이동 전에 물을 먼저 전파시켜야 한다. wterQu
https://www.acmicpc.net/problem/2473✔ 알고리즘 : 투포인터✔ 두 용액에 이은 투포인터 문제이다. 용액 3개를 골라야 하므로 1개(index : i)는 고정시키고 i+1 ~ N-1 까지 구간에서 투포인터 알고리즘으로 순회하였다. ✔
https://www.acmicpc.net/problem/1753✔ 알고리즘 : 다익스트라✔ 노드간 거리를 저장하는 2차원 배열로 문제를 풀면 시간초과가 발생하므로 우선순위큐(최소힙)을 사용해야 한다.✔ 그래프에 정보를 입력받고 minHeap에 start, 0
https://www.acmicpc.net/problem/11404✔ 알고리즘 : 플로이드-와샬✔ 다익스트라와 같은 최단경로 그래프 알고리즘인 플로이드-와샬 문제이다. 모든 정점에서의 정점까지의 최단거리를 구할 때 사용되는 알고리즘 이다.✔ 3중 for문을 사
https://www.acmicpc.net/problem/10844✔ 알고리즘 : DP✔ 1차원 배열의 DP로 풀다가 계속 틀렸습니다를 받아서 2차원 DP로 풀어보게 되었다.✔ dpi 👉 길이가 i이고 끝자리가 j로 끝나는 계단수의 갯수✔ 길이가 1일 때 d
https://www.acmicpc.net/problem/18111✔ 알고리즘 : 구현 (브루트포스)✔ 높이를 0부터 문제조건에 있는 256까지 모두 탐색을 하며 가능한 여부인지 확인해야하는 브루트포스 문제이다✔ 3중 for문으로 첫번째 for문은 설정할 높이
https://www.acmicpc.net/problem/2638✔ 알고리즘 : 구현 + BFS✔ 좌표정보 👉 0: 내부공기, 1: 치즈, 2: 외부공기, 3: 녹은상태✔ 치즈를 녹이기 전에 항상 외부공기와 내부공기를 나누는 작업이 필요하므로 (0,0) 부터
https://www.acmicpc.net/problem/14503✔ 알고리즘 : 구현✔ 방문 체크를 위한 배열 visited, 방향 체크를 위한 dx, dy를 가지고 해결했다.✔ 1. 현재 현재 위치를 청소한다.청소한 좌표와 벽의 좌표를 구별하기 위해 청소한
https://www.acmicpc.net/problem/2437✔ 알고리즘 : 그리디✔ 측정 가능한 무게가 끊기지 않는다는 점에 포커스를 두고 문제에 접근하였다.예를들어 현재 1~5 까지 무게를 잴 수 있고 다음 추가 4라고 한다면 1+4 ~ 5+4 까지 무
✔ 알고리즘 : DFS✔ 5개의 도형중 ㅜ를 제외하고는 왔던 길을 되돌아 가야하는 상황이 발생하지 않기 때문에 DFS 탐색으로 찾을 수 있다.✔ ㅜ를 제외한 4가지 경우 👉 DFS범위를 벗어나지 않고 방문하지 않은 점이면 탐색을 이어나간다. 4개 블록을 탐색했을 때
https://www.acmicpc.net/problem/13549✔️ 알고리즘 : BFS✔️ 2배로 순간이동할때 시간이 증가되지 않는 점에 유의해야 한다.✔️ bfs탐색 배열에 넣어줄 때 순간이동 했을 경우를 먼저 탐색해야하므로 unshift 로 맨앞에 넣어
https://www.acmicpc.net/problem/14425✔️ 알고리즘 : 문자열✔️ set 자료구조에 저장하고 has 메서드로 있는지 체크하여 값을 증가시켜주었다.❗탐색하는 과정에서식으로 includes 메서드를 사용해서 제출하면 시간초과가 발생한다
https://www.acmicpc.net/problem/9019✔️ 알고리즘 : BFS✔️ 다음 단계로 넘어갈 때 총 4가지의 경우의 수가 있다. visited 배열을 통해 방문한 좌표인지 체크하고 방문하지 않았을 경우에만 bfs탐색을 이어간다.✔️ path
https://www.acmicpc.net/problem/3190✔️ 알고리즘 : 구현✔️ 사과가 있는 칸은 2로 현재 뱀이 위치해있는 칸은 1로 비어있는 칸은 0으로 설정✔️ 뱀의 위치를 추적하기 위해 path 배열과 뱀의 head, tail을 좌표로 저장✔
https://www.acmicpc.net/problem/18405✔️ 알고리즘 : 구현(BFS)✔️ 바이러스 전파를 하는 문제로 bfs 문제이다. 하지만 우선순위가 번호가 낮은 바이러스부터 전파시켜야 하는 문제이다.✔️ arr를 탐색하며 바이러스가 현재 존재