나를 기록하다
article thumbnail
[백준 16194/자바(java)] 카드 구매하기 2
Algorithm/baekjoon 2023. 8. 16. 17:19

16194번: 카드 구매하기 2 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 256 MB 9997 7509 6184 76.130% 문제 요즘 민규네 동네에서는 스타트링크에서 만든 PS카드를 모으는 것이 유행이다. PS카드는 PS(Problem Solving)분야에서 유명한 사람들의 아이디와 얼굴이 적혀있는 카드이다. 각각의 카드에는 등급을 나타내는 색이 칠해져 있고, 다음과 같이 8가지가 있다. 전설카드 레드카드 오렌지카드 퍼플카드 블루카드 청록카드 그린카드 그레이카드 카드는 카드팩의 형태..

article thumbnail
[백준 24445/자바(java)] 알고리즘 수업 - 너비 우선 탐색 2
Algorithm/baekjoon 2023. 8. 15. 19:52

문제 https://www.acmicpc.net/problem/24445 24445번: 알고리즘 수업 - 너비 우선 탐색 2 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net 문제 분석 그래프와 정렬, bfs를 이용하여 너비 우선 탐색을 하는 문제이다. - BufferedReader, BufferedWriter, StringTokenizer을 사용하여 입출력을 좀 더 효율적으로 구현 - Collections.sort()와 reverseOrder()를 이용하여 내림차순 정렬 - 재귀 BFS를 ..

article thumbnail
[백준 10799/자바(java)] 쇠막대기
Algorithm/baekjoon 2023. 8. 11. 11:06

이 문제는 스택을 활용하여 푸는 문제이다. 자바에서는 ArrayDeque도 있기에 둘 중 편한 방법으로 풀이하면 된다. 1. Stack import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.next(); sc.close(); int answer = 0; Stack stack = new Stack(); char[] arr = s.toCharArray(); for (int i = 0 ; i < arr.length ; i++) { char x = arr[i]; if (x == ..

article thumbnail
[백준 1874/자바(Java)] 스택으로 오름차순 수열 만들기
Algorithm/baekjoon 2023. 7. 21. 11:26

https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 스택 연산 수행 방법 현재 수열 값 ≥ 자연수 현재 수열 값이 자연수보다 크거나 같을 때까지 자연수를 1씩 증가시키며 자연수를 스택에 push한다. 그리고 push가 끝나면 수열을 출력하기 위해 마지막 1회만 pop한다. 현재 수열 값 < 자연수 현재 수열 값보다 자연수가 크다면 pop으로 스택에 있는 값을 꺼낸다...

article thumbnail
[백준 11003/자바(Java)] 최솟값 찾기
Algorithm/baekjoon 2023. 7. 20. 21:45

https://www.acmicpc.net/problem/11003 1단계 - 문제 분석하기 일정 범위 안에서 최솟값을 구하는 문제 → 슬라이딩 윈도우 + 정렬 일반적인 정렬의 시간 복잡도 nlog(n) → N과 L의 최대 범위가 5,000,000인 이 문제에서 정렬 사용 불가 → O(N)의 시간 복잡도로 해결해야 함. → 슬라이딩 윈도우를 덱(deque)으로 구한하여 정렬 효과를 볼 수 있음 덱은 그림처럼 양 끝에서 데이터를 삽입하거나 삭제 가능한 자료구조이다. 2단계 - 손으로 풀어 보기 덱에서는 (인덱스, 숫자) 형태의 노드를 클래스로 구현하여 저장한다. 덱에서 노드를 제거하는 상황 설명을 위 해 (1,1)을 덱에 추가할 때, (2,5)를 덱에 추가할 때 필요한 탐색, 검사 과정 생략 이 상태에서 ..

article thumbnail
[백준 11866 파이썬(Python) / 자바(Java)] 요세푸스 문제 0
Algorithm/baekjoon 2023. 6. 28. 13:49

문제 접근 처음에 문제를 접하고, 큐를 사용한 문제 풀이와 인덱스와 pop을 활용한 문제 풀이 2가지를 생각해보았다. 1. 파이썬(Python) 1) index와 pop을 이용한 문제 풀이 n, k = map(int, input().split()) arr = [i for i in range(1, n + 1)] ans_arr = [] idx = k - 1 # 시작 인덱스를 K-1로 설정 while arr: # 인덱스가 배열의 길이를 초과하는 경우, 인덱스를 배열의 길이로 나눈 나머지로 조정 if idx >= len(arr): idx %= len(arr) remove_elem = arr.pop(idx) ans_arr.append(remove_elem) # 다음 시작 인덱스를 K-1만큼 증가 idx += k ..

profile on loading

Loading...