1. 입력을 그래프로 초기화 2. dfs나 bfs로 1번부터 다른 노드까지의 거리를 계산 3. 가장 최대 거리를 찾아 그것과 같은 노드의 개수를 세면 정답
1. 문제의 그림은 삼각형으로 되어 있지만 실제 입력은 그렇게 되어 있지 않다는 것을 고려 2. 제일 왼쪽은 본인의 오른쪽 위만 접근 가능하고 제일 오른쪽은 본인의 왼쪽 위만 접근 가능함 3. 양쪽 끝을 제외한 중간 부분은 왼쪽, 오른쪽 위 모두 체크해야 함
1. 우선순위에 따라서 디스크를 처리해야 하므로 우선순위 큐를 활용 2. 처리해야 할 작업을 들어온 시간에 따라 정렬(현재 시간보다 시작 시간이 빠른 작업만 처리 가능하기 때문)
1. 전체 시간에 따라 처리하는 인원 수가 n보다 크거나 같게 되는 최소의 시간을 구하는 문제로 판단하여 이분 탐색 활용 2. 심사 시간을 오름차순 정렬 3. 최대 시간을 (제일 느린 심사 시간 * n)으로 잡음(그 이상의 시간은 나올 수가 없음)
1. 각 섬이 연결된 다리를 비용 별로 정렬(그리디하게 짧은 것 우선) 2. n개의 섬이 있다면 모두 연결이 되려면 n-1개의 간선이 연결되면 된다는 것을 파악 3. 연결된 간선이 싸이클이 되지 않도록 선택하면서 합치면서 비용을 추가
1. 연결된 컴퓨터를 그래프로 초기화 2. 연결된 컴퓨터에서 방문하지 않은 컴퓨터를 BFS(혹은 DFS) 3. BFS(혹은 DFS) 한 횟수가 정답
1. 해당 좌표에 도달하는 길의 수를 누적하면 되겠다고 파악 2. 처음 (1, 1)은 1로 시작 3. 물 웅덩이인 좌표는 갈 수 없으므로 0으로 만듦 4. (i, j) = (i - 1, j) + (i, j - 1) % MOD 하는 방식
1. 우선순위 큐는 최대, 최소를 동시에 관리할 수 없으므로 최댓값과 최솟값을 각각 따로 우선순위 큐를 둠 2. 중복한 데이터가 들어올 수 있으므로 map으로 들어온 수와 횟수를 저장 3. 각 명령에 따라 삽입, 최댓값 삭제, 최솟값 삭제
1. 현재 단어에서 다음 단어로 변환하면서 타겟 단어가 되는지 보면 되기에 DFS나 BFS로 풀면 되겠다고 판단 2. 해당 단어의 사용 여부(이미 변환했었는지)를 경로 별로 저장하여 진행 3. 한 경로를 사용했다가 DFS 후 false로 돌려놔야 함(백트래킹)
1. 시작 지점이나 도착 지점에 카메라를 설치하여도 만나는 것으로 인정되는 것을 파악 2. 도착 지점을 기준으로 정렬 3. 도착 지점에 카메라를 설치하고 해당 지점이 다음 루트의 사이라면 유지
1. 순위를 정할 수 있으려면 본인이 이길 수 있는 인원 + 지는 인원이 n - 1명이면 된다는 것을 파악 2. 플로이드-워셜 알고리즘으로 i->k가 되고 k->j가 된다면 i->j가 된다는 것을 활용하여 구현
1. 모든 간선을 한번만 방문해야 하므로 오일러 경로를 활용 2. 항공권의 from, to를 map과 multiset을 활용하여 저장 3. 스택으로 시작인 ICN을 넣고 빌 때까지 반복
1. 테두리만 이동할 수 있으므로 직사각형의 외부와 내부를 1, 0으로 처리하여 이동 가능 여부를 판단 2. 좌표를 바로 사용하면 예시로 (3, 5)과 (3, 6) 서로 떨어져 있는데 BFS나 DFS를 하면 붙어 있다고 판단하게 되므로 각 좌표를 2배로 늘려 처리
문제를 잘게 쪼개서 생각해야 한다! 1. 게임 보드에서 빈칸 모음 리스트를 BFS/DFS로 탐색 2. 테이블의 퍼즐 조각 모음 리스트를 BFS/DFS로 탐색 3. 각 리스트를 0,0을 기준으로 정규화->이는 좌표가 달라도 빈칸에 들어가는지 확인하기 위한 작업
1. 이분 탐색을 인덱스가 아닌 거리로 비교해서 탐색 2. 바위를 정렬하고 left = 0, right = distance로 시작 3. 0과 distance를 체크해야 하고 mid에 따라 제거할 바위 개수와 이전 값을 기록
프로그래머스LV0 자바 solve_1
프로그래머스LV0 자바 solve_2
프로그래머스LV1 자바 solve_1
프로그래머스LV1 자바 solve_2
프로그래머스LV1 자바 solve_3
프로그래머스LV1 자바 solve_4
프로그래머스LV1 자바 solve_5
프로그래머스 LV2 solve_최댓값과 최솟값, JadenCase 문자열 만들기, 올바른 괄호
프로그래머스 LV2 solve_최솟값 만들기, 이진 변환 반복하기, 숫자의 표현
프로그래머스 LV2 solve_다음 큰 숫자, 짝지어 제거하기, 피보나치 수
프로그래머스 LV2 solve_카펫, 구명보트
프로그래머스 LV2 solve_점프와 순간 이동, 귤 고르기
프로그래머스 LV2 solve_멀리 뛰기, N개의 최소공배수
프로그래머스 LV2 solve_연속 부분 수열 합의 개수, 영어 끝말잇기
프로그래머스 LV2 solve_예상 대진표, 할인 행사
프로그래머스 LV2 solve_괄호 회전하기, n^2 배열 자르기
프로그래머스 LV2 solve_의상, H-Index
프로그래머스 LV2 solve_피로도, 행렬의 곱셈
프로그래머스 LV2 solve_기능개발, 캐시
프로그래머스 LV2 solve_전화번호 목록, 프로세스
프로그래머스 LV2 solve_튜플, 롤케이크 자르기, 게임 맵 최단거리, 타겟 넘버, 뉴스 클러스터링
프로그래머스 LV2 solve_방문 길이, 뒤에 있는 큰 수 찾기, 더 맵게
프로그래머스 LV2 solve_k진수에서 소수구하기, 주식 가격, 땅따먹기, n진수 게임, 압축, 택배 상자, 숫자 변환하기
프로그래머스 LV2 solve_스킬 트리, 주차 요금 계산, 2 x n 타일링, 파일명 정렬, 오픈채팅방