git주소 : https://github.com/phc09188/JavaStudy1 이상의 입력 값 n을 통해 반복문으로 n개의 index를 list에 입력Collections.sort 함수를 통해 오름차순으로 정렬출력Arrays.sort(list) && l
2차원 배열을 통해서 x와 y 좌표를 입력 받음Arrays.sort함수에 Comparator interface를 추가하여 조건에 맞게 정렬출력Comparator를 사용할 줄 아는가Overide가 잘 되었는가stack의 구조를 이해한다.스택은 오름차순으로 push 되어야
정수 n을 입력 받는다.승자를 저장하는 winnern 배열을 boolean\[] 타입으로 만든다.숫자가 2개만 남을 때까지 접는 작업을 반복하는 재귀함수인 Fold함수를 구현한다.Fold함수에서 얻어진 배열을 입력으로 boolean 값을 출력 받아 boolean 값을
문제 1010번 풀이 접근 해당 문제가 조합 경우의 수를 구하는 문제임을 확인한다. M의 범위가 30까지 가능하므로 결과를 저장하는 변수는 long으로 생성한다.
선형 자료구조 큐에 대해서 떠올린다.선입선출(FIFO)큐 안에 있는 메소드를 사용하여 back을 제외한 나머지를 구현한다.push를 실행할 때 push하는 숫자를 변수에 저장하여 back 명령을 완성한다.반복문이 끝나면 한 번에 출력한다.선형 자료구조 큐에 대해서 알고
git : https://github.com/phc09188선형자료구조 Stack에 대해서 생각한다.스택의 메소드들을 통해 문제에서 원하는 명령을 해결한다.stack 자료구조에 대해 알고 있는지!stack 메소드들을 활용할 수 있는지!피보나치 수열의 구조를 그
git : https://github.com/phc09188스택 선형 자료구조를 생각한다.입력을 받을 때 숫자를 같이 받을 떄를 예외처리한다.스택의 메소드를 이용하여 문제에서 주어진 상황을 해결한다.스택에 대한 기초적인 이해요세푸스 순열에 대해 이해한다.해당
git : https://github.com/phc09188양방향 입출 구조를 가지고 있는 Deque 선형 자료구조에 대해 이해한다.int 인덱스까지 같이 입력 받는 경우를 예외처리한다.실행의 결과를 출력한다.Deque 자료구조에 대한 이해해당 문제를 해결하기
문제 10799번 (성공, 40분 소요) 소스코드 > 풀이 접근 >1. 문제에서는 VPS를 만족하는 입력만 주어진다는 사실을 기억하자 stack에 '('입력에는 해당 인덱스 값을 push한다 만약 ')'가 입력 된다면, 전에 '('가 나왔을 경우에는 razer가 해
입력으로 정해진 배열에서 8x8배열을 잘라서 계산한다.흑과 백 2가지의 색상만 주어짐으로 2차원 boolean배열을 사용하여 흑일 때는 false를 백일 때는 true를 넣는다.8x8 배열이 만들어질 때 마다 search함수를 돌린다.search함수 에서는 다시 칠해야
입력 받은 n개를 길이로 가지고 있는 int배열과 boolean배열을 만든다.5부터 하나씩 stack에서 꺼내와서 case에 따라 pop한 값을 문제의 조건에 맞춰 넣는다.이 때, 결과 배열에 넣으면서, 해당 배열의 boolean값을 true로 바꿔준다.결과를 출력한다
x원을 내서 한 번에 늘어나는 고객의 최댓 값은 100으로 제안하기 때문에 값에 대한 배열을 c+100인 배열로 만들고 배열의 값에 int변수 최대값을 넣는다.value0 을 0으로 초기화하고, value고객 수 = 비용을 만들기 위해 모든 조건에 대해서 반복문을 돌린
n^3 의 정육면체에는 가로 세로 높이에 각각 n개의 주사위를 가지고 만든다.문제에서 밑변을 제외하고 밖으로 보이는 숫자만 더한 값의 최소값을 구한다. 그러면 1면, 2면, 3면이 밖으로 보이는 경우가 있을 것이다.규칙을 구해보면 3면은 4개, 2면은8(n - 2) +
(문제 설명이 길어서 짤린 부분은 아래 링크에 있습니다.)https://www.acmicpc.net/problem/10250문제에서 주어지는 입력 값 H,W,N을 저장한다.N%H에서 N이 6의 배수인 경우에는 0이 됨으로 예외처리를 해주고, 나머지는 층 수로,
git : https://github.com/phc09188짤린부분 = https://www.acmicpc.net/problem/1068트리 자료구조에 대해서 이해한다.몇 번째 노드가 자식 노드를 얼마나 가지고 있는지를 표현하기 위해서 2차원 리스트를
git : https://github.com/phc09188/JavaAlgorithmStudy/blob/main/src/codeTest/boj23294.java문제 : https://www.acmicpc.net/problem/23294문제에서 현재,
git = 백준 10816번전에 10815번 숫자카드 문제에서 인덱스 값의 유무를 판단하는 이분탐색을 사용 했었다. 10815번이번에는 해당 값의 개수를 구하는 문제이기 때문에 upper, lower 탐색법을 설명하고자 한다.아래는 upper와 lower 탐색 코드이다
처음에는 Queue 자료구조를 생각 했고, Queue를 통해 문제를 해결 했다.queue를 통해서는 reverse 부분에서 시간이 많이 걸려서 deque로 전환 했다.deque를 사용하여 reverse를 boolean변수 하나에 지정하여 앞 부터 꺼내거나, 뒤 부터 꺼
문제에서 주어진 출력은 총 4가지로 이루어져 있다.산술평균은 입력할 때마다 sum 변수로 값을 더해서 Math.round를 통해 N으로 나눠 반올림 값을 받는다.중앙 값은 입력 값들을 list에 add하고 sort함수를 사용한 뒤, 중앙 인덱스의 값을 출력한다.최빈값은
문제 이름과 같이 우선순위 큐를 사용하기로 한다.1-1. 우선순위 큐를 오름차순과 내림차순 2가지를 만든다. 1-2. I의 경우 두 개의 우선순위 큐에 추가하고, D의 경우 우선순위 큐가 비어있지 않으면 num이 -1일 경우 오름차순에서 pol
Temp Body
간선은 양방향으로 주어짐으로 해당 문제는 무방향 그래프이다.간선을 입력 받을 때, 양방향으로 nodex를 1로 받아준다.접근 여부를 확인하기 위한 visited\[]배열을 만들어 준다.dfs 탐색을 먼저 출력하고, visited\[]배열을 false로 초기화한 다음에
Depth First Search 의 약자로 깊이 우선 탐색을 위한 알고리즘이다.자기 자신을 호출하는 순환 알고리즘 형태를 지닌다. (stack, 재귀)모든 노드를 방문하고자 할 때 쓰인다.Bread First Search의 약자로 너비 우선 탐색을 위한 알고리즘이다.
문제 14502 연구소(성공) 짤린 문제 내용 : 백준14502 소스코드 > 문제 접근 >1. 문제 행열에서 0은 빈 칸, 1은 벽, 2는 바이러스라고 하였고, 바이러스는 상하좌우로 벽을 제외하고 퍼진다고 하였다. 벽 3개를 설치하고 바이러스를 확산 시켰을 때 남은
처음에는 입력 값을 뒤에서 부터 index 값을 통해서 해결하려 했지만, 예외 케이스도 있는지 틀렸다는 정답을 받았다.그 다음으로는 곱셈을 위한 stack 하나, 곱셈 할 대상이 되는 길이(len) stack 하나를 통해 문제를 해결했다.입력을 캐릭터 배열로 만들고,
한 섬에 다리가 없을 수도 있고, 여러개가 있을 수도 있다. 그래서 전체 탐색을 하기 위해 브루트포스 탐색 방법을 사용하기로 했다.그냥 start지점 부터 따라다니면서 finish 지점까지의 max 값을 찾는 방식으로 코드를 구현하면 길이 끊어져 있는 경우 혹은 목표
문제 풀이 방식으로 조합을 통한 완전탐색으로 값을 도출하는 방식과, 알파벳의 해당 자리에 대한 값으로 우선순위를 통해 값을 출력하는 방식을 생각했다.조합의 경우가 다양해질 것 같아서 시간을 줄이기 위해 우선순위를 통한 출력 방식으로 접근하게 되었다.입력받은 값을 rev
전에 회문을 찾는 문제에서는 제귀를 사용 했지만, 이번에는 투 포인터로 풀기로 했다.left와 right를 문자열의 첫 부분과 끝 부분으로 두고, 유사회문을 위한 cnt 변수도 0으로 초기화한다.while문을 통해 왼쪽과 오른쪽을 검사하면서 회문인지 검사한다.만약 le
문제 설명개발자 출신으로 세계 최고의 갑부가 된 어피치는 스트레스를 받을 때면 이를 풀기 위해 오프라인 매장에 쇼핑을 하러 가곤 합니다. 어피치는 쇼핑을 할 때면 매장 진열대의 특정 범위의 물건들을 모두 싹쓸이 구매하는 습관이 있습니다. 어느 날 스트레스를 풀기 위해
먼저 행렬 곱에 대해서 생각한다 i,j,k순으로 3중 for문을 돌린다고 했을 때 (i,j) 좌표에는 (i,0~k) \* (0~k,j)의 합이 들어간다.ex) 문제에서 행열의 크기는 최대 5x5 밖에 안 되지만, 제곱수를 보면 B가 1000000000000까지 가능
일단 먼저 에라토스의 채를 통해 소수는 1, 아닌 값은 0으로 만든 int 배열을 만든다.투 포인터를 통해서 결과를 구한다.이 문제는 애라토스의 채를 구현할 줄만 알면 난이도에 비해서 쉽게 풀리는 문제였다.에라토스의 채투 포인터
입력 예시의 2번째 예시를 가지고 설명할 것이다.preorder와 inorder 방식이 주어질 때 postorder를 구하는 문제이다.preorder의 첫 숫자는 트리의 root 값이다.root 값을 inorder에서 찾아보면 4번 idx에 있는 것을 볼 수 있고, r
감소하는 수의 최대 숫자는 9876543210이다.감소하는 수를 담을 list를 만든다.맨 앞에 들어갈 숫자를 기준으로 감소하는 수를 담을 재귀함수를 구현한다.만약 길이가 10이 넘는 수가 나온다면 감소하는 수가 존재하지 않으니 재귀를 끝낸다.감소하는 수가 들어있는 리
모든 단어는 anta로 시작하고 tica로 끝난다고 한다. 그렇다면 최소 5개 이상의 단어를 알아야 읽을 수 있는 숫자가 존재한다는 의미로 볼 수 있다.추가로 k가 26이라면, 모든 알파벳을 배웠다는 뜻으로 주어진 단어 모두를 읽을 수 있다.나머지 경우를 계산하기 위해
먼저 3xN 크기의 벽면이라는 부분을 집중하면, N이 홀수가 될 경우 전체 면적이 홀수가 되기 때문에 불가능하다는걸 알 수 있다.3x2의 경우를 먼저 살펴보면 해당 크기를 채울 수 있는 방법은 총 3가지가 된다.N이 2보다 클 경우에는 해당 3x2를 왼쪽에 두고 나머지
이 문제는 DP관련 문제이다. 그래서 점화식을 만드려고 생각해 보았다.N이 0인 경우, 0 ~ 0까지의 숫자를 사용하기 때문에 k가 몇이 되더라도 방법은 한가지 뿐일 것이다.K가 1인 경우도 위와 비슷하게 N이 몇이 되더라도 1가지의 방법 밖에 없을 것이다.dpK 배열
문제를 읽었을 때 최단경로 dp문제로 판단했다.먼저 무개와 가치에 관련된 배열 w와 v를 생성하고, dp 배열을 초기화한다.dp배열을 구하기 위한 for문에서 기본적으로 i,j 인덱스의 값은 기본적으로 이전 아이템의 가치를 저장한다.만약 무게에서 자신의 무게를 뺐을 떄
해당 문제는 dp로 접근해 보자!N이 1~5일 경우는 1개 짜리가 N개씩 있다.N이 6~ 11일 경우에는 6개 짜리 하나와 N-6개의 1개짜리가 있다.2번과 3번을 d라는 배열에 미리 담아둔다.만약 13보다 낮은 N값이면 d 배열에 있는 값을 출력하고, 13 이상이면
문제를 보고 처음에는 최단경로 관련 문제가 아닌 것으로 생각해 N개의 사건을 1차원 배열의 dp로 접근하려고 했다.최소, 최단 이런 단어는 없지만, case들을 연결하기에 최단경로 알고리즘을 적용하고자 하였고, k와 s의 수가 다른 문제들에 비해 낮은 편이고 시간제한도
문자열에서 bomb가 존재하면 지우고, 나머지 문자들을 이어서 반환하는 문제이다.반환된 문자에 또 bomb이 존재한다면 다시 지워 줘야한다.그래서 풀이 방식을 stack과 재귀 2가지 방식으로 풀었다.재귀 (메모리 초과)input에 bomb가 존재하지 않는다면 inpu
문제 10282번 풀이 접근 소스코드 > 문제 핵심 다익스트라
처음에 문제를 보고 기본적인 DFS|BFS 문제라고 생각했었다.문제의 조건에서 외부 공간에 있는 치즈만 녹는 조건이 있어서, (0,0)을 외부공기로 가정하고, BFS를 통해서 map의 외부공기에 -1의 값을 대입한다.내부공기가 아닌 외부공기에 접한 치즈들만 list에