Baekjoon/Gold
-
이번 문제는 스택을 사용하는 문제이다. 스택에 인덱스를 넣어주며 활용을 하면 되는데 예시를 들어서 설명을 하면 편할 것 같다. 3 2 5 8 이라는 배열이 있다고 하자. 스택에 먼저 첫 인덱스인 0을 넣어준다. stack.push(0) 그 후 반복문을 돌며 해당 인덱스에 해당하는 값보다 더 큰 값을 찾으면 된다. arr[stack.peek()] == arr[0] == 3 이고 저 값보다 더 큰 값을 가지는 것은 arr[1] == 5이다. while(arr[stack.peek()] < arr[i]) { result[stack.pop()] = arr[i] } 로 표현할 수 있는데 배열을 하나하나 조사하며 해당 값보다 더 큰 값이 나오면 해당 값까지의 오큰수를 모두 arr[i]로 설정하는 것이다. 아래 자세한..
[백준] 스택, 큐 - 17298_오큰수 Java[자바]이번 문제는 스택을 사용하는 문제이다. 스택에 인덱스를 넣어주며 활용을 하면 되는데 예시를 들어서 설명을 하면 편할 것 같다. 3 2 5 8 이라는 배열이 있다고 하자. 스택에 먼저 첫 인덱스인 0을 넣어준다. stack.push(0) 그 후 반복문을 돌며 해당 인덱스에 해당하는 값보다 더 큰 값을 찾으면 된다. arr[stack.peek()] == arr[0] == 3 이고 저 값보다 더 큰 값을 가지는 것은 arr[1] == 5이다. while(arr[stack.peek()] < arr[i]) { result[stack.pop()] = arr[i] } 로 표현할 수 있는데 배열을 하나하나 조사하며 해당 값보다 더 큰 값이 나오면 해당 값까지의 오큰수를 모두 arr[i]로 설정하는 것이다. 아래 자세한..
2024.02.07 -
이번 문제는 살짝 헤맸다.. 먼저 어떤 식으로 풀어갈지 생각을 하고나서 풀었어야 했는데 너무 무턱대고 문제부터 풀어서 생각이 잠시 멈췄나보다..ㅎ 어찌어찌 책을 참고하며 풀었다. 일단 이번 문제도 투 포인터 방식으로 푸는 문제였다. 먼저 주어진 숫자를 배열에 넣은 뒤 오름차순 정렬을 해주는 것부터가 시작이다. 그리고 반복문을 돌며 배열에서 하나의 값을 찾아낸 뒤 투 포인터로 두 숫자의 합과 같은 것을 고르면 된다. 여기서 중요한 점은 투 포인터에 해당하는 인덱스가 처음 고른 인덱스와 같으면 서로 다른 두 수의 합이 아니므로 주의해야한다. 필자는 여기서 헤맸다..ㅎㅎ 아래 코드를 한번 보자 import java.io.*; import java.util.*; public class Main { public ..
[백준] 투 포인터 - 1253_좋다 Java[자바]이번 문제는 살짝 헤맸다.. 먼저 어떤 식으로 풀어갈지 생각을 하고나서 풀었어야 했는데 너무 무턱대고 문제부터 풀어서 생각이 잠시 멈췄나보다..ㅎ 어찌어찌 책을 참고하며 풀었다. 일단 이번 문제도 투 포인터 방식으로 푸는 문제였다. 먼저 주어진 숫자를 배열에 넣은 뒤 오름차순 정렬을 해주는 것부터가 시작이다. 그리고 반복문을 돌며 배열에서 하나의 값을 찾아낸 뒤 투 포인터로 두 숫자의 합과 같은 것을 고르면 된다. 여기서 중요한 점은 투 포인터에 해당하는 인덱스가 처음 고른 인덱스와 같으면 서로 다른 두 수의 합이 아니므로 주의해야한다. 필자는 여기서 헤맸다..ㅎㅎ 아래 코드를 한번 보자 import java.io.*; import java.util.*; public class Main { public ..
2024.02.04 -
이번 문제도 합 배열을 이용해 해결해야 하는 문제이다. 합 배열을 구하는 방법은 S[i] = S[i-1] + A[i] 이다. 위 예제를 기준으로 살펴보자. 합 배열은 [1, 3, 6, 7, 9]로 3으로 나눈 나머지의 배열은 [1, 0, 0, 1, 0]이다. S[i] % M = 0이고 S[j] % M = 0이면 (S[i] - S[j]) % M = 0 이다. 따라서 S[i] % M == S[j] % M인 i와 j를 찾으면 되므로 나머지 배열의 같은 값을 가진 인덱스 중에서 2개를 고른 뒤 정답에 추가해 주면 된다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOEx..
[백준] 구간 합 - 10986_나머지 합 구하기 Java[자바]이번 문제도 합 배열을 이용해 해결해야 하는 문제이다. 합 배열을 구하는 방법은 S[i] = S[i-1] + A[i] 이다. 위 예제를 기준으로 살펴보자. 합 배열은 [1, 3, 6, 7, 9]로 3으로 나눈 나머지의 배열은 [1, 0, 0, 1, 0]이다. S[i] % M = 0이고 S[j] % M = 0이면 (S[i] - S[j]) % M = 0 이다. 따라서 S[i] % M == S[j] % M인 i와 j를 찾으면 되므로 나머지 배열의 같은 값을 가진 인덱스 중에서 2개를 고른 뒤 정답에 추가해 주면 된다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOEx..
2024.01.31