반응형

백준 10

백준 1157번. 단어 공부

https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 자세한 내용은 위 링크에서 직접 확인해보도록 하자. 풀이 import java.util.* fun main() { val input = Scanner(System.`in`) val s = input.next().toUpperCase() var max = 0 var res = ' ' for(i in s){ val cnt = s.count{it == i} if(max < cnt){ max = cnt res = i }else if(ma..

백준 2022.01.20

백준 1003번 피보나치 함수(Kotlin)

이번 글에선 백준 1003번을 풀어보도록 하자. https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 자세한 문제 내용은 위 링크에서 직접 확인해보도록 하자. 풀이 이 문제를 보고 제일 먼저 든 풀이법은 그냥 문제에 나온 함수를 돌리는 거였다. import java.util.Scanner var zero = 0 var one = 0 fun main(){ val input = Scanner(System.`in`) val t = input.nextInt() for(i in 1 .. t){ var n = input.nextInt() fibonacchi..

백준 2022.01.08

백준 1700. 멀티탭 스케줄링(파이썬)

자세한 문제 내용은 아래 링크로 가주세요. www.acmicpc.net/problem/1700 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전 www.acmicpc.net 접근 방법 일단 문제는 플러그를 빼는 횟수를 최소한으로 해서 그 회수를 출력하는 문제입니다. 자 그럼 차근차근 풀어나가 봅시다. from sys import stdin N, K = stdin.readline().split() N = int(N) K = int(K) multap = [0] * N li = list(map(int, stdin.readline().split(..

백준 2020.11.25

백준 1202번. 보석 도둑(파이썬)

자세한 문제 내용은 아래 링크로 가주세요. www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 접근 방법 답을 구하는 법 자체는 어렵지 않은데, 시간 초과 때문에 애먹었던 문제입니다. 보석의 무게와 가격 M, V가 있고, 가방에 담을 수 있는 최대 C가 있습니다. 그럼 M이 C이하인 것 중에 가장 V가 큰 원소를 구해서 더하면 되는 문제라고 생각해서 접근해봤습니다. N, K = stdin.readlin..

백준 2020.11.24

백준1449번. 수리공 항승(파이썬)

백준 알고리즘 1449번 수리공 항승 문제입니다. 자세한 문제는 사진을 읽어보시기 바랍니다. www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 접근 방법 간단한 문제인데, 먼저 문제에서 중요한 부분은 물을 막을 때 좌우 0.5만큼 간격을 줘야 한다는 부분입니다. 이말은 즉 연속하는 물이 새는 부분은 그 길이의 합이 L+1이하이면 하나의 테이프로 다 막을수 있다는 뜻이죠. 이 정도 생각했으면 문제는 다 푼거나 마찬가지입니다. N, L = inpu..

백준 2020.11.23

백준 2529번. 부등호 (C언어)

백준 2529번 부등호 문제입니다. 자세한 문제내용은 글을 읽어보시길 바랍니다. www.acmicpc.net/problem/2529 접근방법 처음 문제를 풀려고 할 땐 딱히 떠오르는 방법이 없어서 매우 고민했던 문제입니다. 각 부등호의 개수에 따라서 최대값, 최대값을 정해서.. 어쩌고 저쩌고 생각을 많이 해봤는데, 답이 잘 안나와서 일단 문제를 다시 차분히 읽어봤습니다. 그랬더니 문제에서 부등호 k의 범위가 최대 9까지라고 했고, 즉 숫자는 최대 10개이기 때문에 모든 경우의 수를 다 검사하는 완전탐색으로 풀리지 않을까 생각했습니다. int main() { int k, i; scanf("%d", &k); for (i = 0; i 0) { strcpy(min, copy); } } } } for (int i..

백준 2020.08.14

백준 1049번. 기타줄 (C언어)

백준 1049번 기타줄 문제입니다. 자세한 문제내용은 글을 읽어보시길 바랍니다. https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 접근방법 해당 문제같은 경우 예제의 입력과 출력을 잘 보면 매우 간단하게 풀어낼 수 있는 문제입니다. 보통 이런 문제의 경우 묶음과 낱개를 함께 구매해야 한다고 생각할 수 있는데, 예제를 보면 묶음과 낱개를 따로따로 구매할 수 있습니다. 따라서 묶음 중 최소 가격, 낱개 중 최소 가격을 구한 뒤, 필요한 기타줄을 ..

백준 2020.08.13

백준 10610번. 30 (C언어)

백준 10610번 30 문제입니다. 자세한 문제 내용은 글을 읽어보시기 바랍니다. https://www.acmicpc.net/problem/10610 10610번: 30 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶� www.acmicpc.net 접근방법 솔직히 이 문제의 경우 어떻게 시작해야 될지 처음에 막막했습니다. 가장 먼저 생각한 것은 일단 0이 없으면 30의 배수를 절대 만들 수 없으니 입력받은 숫자에서 0이 없다면 바로 -1을 반환하고 종료하는 것부터 시작했습니다. 다음으로 생각해본 것은 최대값을 어떻게 만드느냐 인데, 30의 배수인지 판단하는 ..

백준 2020.08.12

백준 1541번. 잃어버린 괄호 (C언어)

백준 1541번 잃어버린 괄호 문제입니다. 자세한 내용은 문제를 읽어보시길 바랍니다. https://www.acmicpc.net/problem/1541 접근방법 문제 자체는 별로 어렵지 않은데, 이상한 곳에서 좀 시간을 잡아먹었던 문제입니다. 먼저, 이 문제는 계산식을 문자열로 입력받아서 괄호를 사용해 가장 낮은 결과를 얻는 문제입니다. 문자열 자체는 저희가 임의로 설정하는 것이기 때문에 문자열을 수정할 필요는 없습니다. 해결법은 간단하게 최초의 -가 나올 때까지 모든 수를 결과에 더해주고, -가 나온 이후의 숫자를 모두 빼주시면 해결 가능합니다. 예를 들어 55-50+40-90+58-54과 같은 수식이 있을 때, - 이후의 모든 식은 55-(50+40)-(90+58)-54와 같이 바꿀 수 있습니다. 그..

백준 2020.08.11

백준1931번. 회의실배정(C언어)

백준 알고리즘 1931번 회의실 배정 문제입니다. 자세한 문제는 사진을 읽어보시기 바랍니다. https://www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 접근방법 일단 기본적인 접근방법을 몇 가지 생각해봅시다. 회의를 특정한 순서로 정렬한 뒤, for문을 사용해 각 요소가 조건에 맞으면 카운트를 증가시킨다. 먼저 이런 방법을 생각해봤는데, 그럼 어떻게 이를 정렬해야 할까요? 먼저 중점적으로 생각할 부분은 시간이기 때문에, 시작시간, 소요시간, 종료시간으로 생각해봅시다. 단순히 생각했을 때, 시작시간 중심으로 정렬하면 간단할 것 같습니다. 하지만 아무리 빨리 시작해도 소요시간..

백준 2020.08.10
반응형