프로그래밍/백준

프로그래밍/백준

# 1874 - 스택 수열

1. 문제 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 입력된 n 값에 해당하는 숫자들이 주어지는데, 오름차순으로 스택에 넣되 케이스에 맞는 결과를 + , - 에 맞게 출력해야 한다. 2. 제출 결과 3. 문제 발생 > 두 객체 간의 비교 while (data.size() != 0) { if (stack.isEmpty() && idx == 0) { // 초기상태 stack.push(num); sb.append("+").app..

프로그래밍/백준

# 10828 - 스택 (Stack)

1. 문제 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 명령이 주어지면 stack에 메소드인 push, pop, size, empty, top 을 구현하고, 해당 결과를 출력하면 된다. 2. 제출 결과 3. 문제 발생 > 시간 초과 stack 기능에 맞게 구현 동작은 잘 작성한 것 같은데 시간 초과가 발생했다. 생각을 해보니, 이 문제에는 시간 제한이 존재하여 0.5초 안에 출력이 다 되어야 한다. 기존에 작성한 코드는 println()으로 switch 문 안에서 해당 rule (push,..

프로그래밍/백준

# 10818 - 최소, 최대

문제 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 입력 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 출력 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다. 나는 이 문제를 세가지 방법으로 풀어보았다. 코드 1 - 기준점 잡고 최대, 최소 비교하기 import java.u..

프로그래밍/백준

# 시간초과 해결 방법

그리디 알고리즘을 풀다가 너무 막혀서 잠시 그리디 알고리즘을 멈추고, 정렬에 대해 공부를 하고 있다. 오름차순, 내림차순 등은 알겠는데 백준 정렬 알고리즘을 풀다보니 반복문에서 여러개 값을 입력받는데에서 input() 방식을 사용하다 보니 시간초과가 발생하였다. 이러한 문제점들을 검색해보니, 값을 많이 입력받지 않는 경우라면 input()함수를 사용해도 되지만 반복문을 이용해 값을 여러개 입력 받는 경우에는 시간초과가 발생하기 때문에 sys.stdin.readline()함수를 사용해야된다고한다. 한 개의 정수를 입력받을 때 import sys a = int(sys.stdin.readline()) 정해진 개수의 정수를 한줄에 입력받을 때 impor..

프로그래밍/백준

# 11399 - ATM (그리디 알고리즘)

문제 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 입력 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) 출력 첫째 줄에 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 출력한다. 이 문제는 생각보다 괜찮았다. ① 먼저, n (n명의 사람) 과 n명의 사람들이 돈을 인출하는데 걸리는 시간을 입력받아야 한다. # n명의 사람 n = int(input()) # n명당 걸리는 시간 리스트 추가 time = list(map(..

프로그래밍/백준

# 11047 - 동전0 (그리디 알고리즘)

[ 문제 ] 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. 이 문제는 coins를 사용해서 k원을 만드는 데 필요한..

dbguswn
'프로그래밍/백준' 카테고리의 글 목록