본문 바로가기

자료구조68

[백준] 24523번 : 내 뒤에 나와 다른 수 (C++) 24523번 : 내 뒤에 나와 다른 수 문제) 길이가 N인 수열 1 2 ⋯ A_1 , A_2 , ..., A_N이 주어진다. 1 ≤ i ≤ N인 정수 i마다 i < j ≤ N이고 A_i ≠ A_j인 정수 j중 최솟값을 출력하라. 만약 이러한 j가 없다면 −1을 출력하라. 입력 : 첫째 줄에 수열 A의 크기 N이 주어진다. 둘째 줄에는 1 2 ⋯ A_1 A_2 A_N이 공백으로 구분되어 주어진다. (1≤ N ≤10^6, −10^9≤ A_i ≤10^9) 입력으로 주어지는 모든 수는 정수이다. 출력 : 각 i마다 조건을 만족하는 최솟값 j를 출력하라. 만약 이러한 j가 없다면 −1을 출력하라. 풀이) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2.. 2024. 2. 8.
[백준] 2015번 : 수들의 합 4 (C++) 2015번 : 수들의 합 4 문제) A[1], A[2], ..., A[N]의 N개의 정수가 저장되어 있는 배열이 있다. 이 배열 A의 부분합이란 1 ≤ i ≤ j ≤ N인 정수 i와 j에 대해 A[i]부터 A[j]까지의 합을 말한다. N과 A[1], A[2], ..., A[N]이 주어졌을 때, 이러한 N×(N+1)/2개의 부분합 중 합이 K인 것이 몇 개나 있는지를 구하는 프로그램을 작성하시오. 입력 : 첫째 줄에 정수 N과 K가 주어진다. (1 ≤ N ≤ 200,000, |K| ≤ 2,000,000,000) N과 K 사이에는 빈칸이 하나 있다. 둘째 줄에는 배열 A를 이루는 N개의 정수가 빈 칸을 사이에 두고 A[1], A[2], ..., A[N]의 순서로 주어진다. 주어지는 정수의 절댓값은 10,00.. 2024. 1. 28.
[프로그래머스] 두 큐 합 같게 만들기 (C++) 두 큐 합 같게 만들기 / Lv.2 문제 설명 ) 길이가 같은 두 개의 큐가 주어집니다. 하나의 큐를 골라 원소를 추출(pop)하고, 추출된 원소를 다른 큐에 집어넣는(insert) 작업을 통해 각 큐의 원소 합이 같도록 만들려고 합니다. 이때 필요한 작업의 최소 횟수를 구하고자 합니다. 한 번의 pop과 한 번의 insert를 합쳐서 작업을 1회 수행한 것으로 간주합니다. 큐는 먼저 집어넣은 원소가 먼저 나오는 구조입니다. 이 문제에서는 큐를 배열로 표현하며, 원소가 배열 앞쪽에 있을수록 먼저 집어넣은 원소임을 의미합니다. 즉, pop을 하면 배열의 첫 번째 원소가 추출되며, insert를 하면 배열의 끝에 원소가 추가됩니다. 예를 들어 큐 [1, 2, 3, 4]가 주어졌을 때, pop을 하면 맨 앞에.. 2023. 11. 13.
[프로그래머스] 다리를 지나는 트럭 (C++) 다리를 지나는 트럭 / Lv.2 문제 설명 ) 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 따라서, 모든 트럭이 다리를 지나려면 최소 8초가 걸립니다. solution 함수의 매개변수로 다리에 올라갈 수 있는 트럭 수 bridg.. 2023. 11. 1.