본문 바로가기

반응형

알고리즘/python

(246)
[python/파이썬] 백준 1453 피씨방 알바 [문제 출처] https://www.acmicpc.net/problem/1453 1453번: 피시방 알바 첫째 줄에 손님의 수 N이 주어진다. N은 100보다 작거나 같다. 둘째 줄에 손님이 들어오는 순서대로 각 손님이 앉고 싶어하는 자리가 입력으로 주어진다. www.acmicpc.net [문제 풀이] n명이 사람들에 대해 자신이 앉고자 하는 자리의 번호가 주어질 때, 자신이 원하는 번호에 앉지 못하는 사람의 수를 구하는 문제이다. 앞에서 다른 사람이 말한 번호를 뒤에서도 말하게 되면 나중에 말한 사람은 자리에 앉을 수 없다. n명의 손님에 대한 자리 번호를 리스트로 저장하고, 이 리스트를 set으로 바꾸어 중복을 제거한 후에 원소의 개수의 차이를 구하면 되는 문제이다. #1453 n = int(inpu..
[python/파이썬] 백준 2083 럭비 클럽 [문제 출처] https://www.acmicpc.net/problem/2083 2083번: 럭비 클럽 입력 받은 각 회원에 대해 이름과 분류를 출력한다. 성인부 회원이면 'Senior', 청소년부 회원이면 'Junior'를 출력한다. www.acmicpc.net [소스 코드] import sys input = sys.stdin.readline while True: name, age, weight = input().split() if name == '#': break if int(age) > 17 or int(weight) >=80: print(name + " Senior") else: print(name + " Junior"
[python/파이썬] 백준 1267 핸드폰 요금 [문제 출처] https://www.acmicpc.net/problem/1267 1267번: 핸드폰 요금 동호가 저번 달에 이용한 통화의 개수 N이 주어진다. N은 20보다 작거나 같은 자연수이다. 둘째 줄에 통화 시간 N개가 주어진다. 통화 시간은 10,000보다 작거나 같은 자연수이다. www.acmicpc.net [문제 풀이] 동호가 n번의 통화를 했을 때, 영식 요금제와 민식 요금제 중에 더 저렴한 요금제를 찾는 문제이다. 영식 요금제는 30초마다 10원씩 청구되고, 민식 요금제는 60초마다 15원씩 청구된다. - 영식 요금제 ~29s : 10원 30 ~ 59s : 20원 60 ~ 89s : 30원 ... - 민식 요금제 ~59s : 15원 60~ 119s : 30원 120 ~ 179s : 45원..
[python/파이썬] 백준 1075 나누기 [문제 출처] https://www.acmicpc.net/problem/1075 1075번: 나누기 첫째 줄에 N, 둘째 줄에 F가 주어진다. N은 100보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. F는 100보다 작거나 같은 자연수이다. www.acmicpc.net [문제 풀이] 100보다 큰 정수 N과, 100보다 작은 정수 F가 주어졌을 때, F로 N을 나눴을 때 나눠 떨어지도록 N의 마지막 숫자 2개를 바꾸고자 한다. 답이 여러 개 있을 수 있지만 그중에서 가장 작은 값을 구하는 문제이다. 가장 작은 값을 구해야 하기 때문에 가장 작은 값인 '00'부터 시작한다. 주어진 N의 마지막 숫자 2개를 바꾸기 위해서 100으로 나눴을 때 나머지를 N에서 빼주었다. 00에서 시..
[python/파이썬] 백준 1059 좋은 구간 [문제 출처] https://www.acmicpc.net/problem/1059 1059번: 좋은 구간 [9, 10], [9, 11], [9, 12], [10, 11], [10, 12] www.acmicpc.net [문제 풀이] 집합 S와 n이 주어졌을 때, n을 포함하는 구간 중 집합 S에 포함된 정수가 포함되지 않은 구간을 구하는 문제이다. 조건을 만족하기 위해서는 집합 S를 오름차순으로 정렬하여, 집합 S의 원소 중에서 구간의 하한선과 상한선이 될 정수를 고르고 그 범위 내에서 구간을 정해야 한다. 그렇게 하한선과 상한선이 정해지면 구간의 개수를 세야 하는데, 경우는 2가지로 나눠질 수 있다. 구간의 시작이 n보다 작은 경우와, n인 경우이다. 예를 들어 보자 S = [4, 8, 13, 24, 30..
[python/파이썬] 백준 1356 유진수 [문제 출처] https://www.acmicpc.net/problem/1356 1356번: 유진수 첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다 작거나 같은 자연수이다. www.acmicpc.net [문제 풀이] 어떤 10진수가 주어졌을 때, 그 수를 앞과 뒤 이렇게 두 부분으로 나누었을 때, 각 부분의 자릿수들의 곱이 서로 같을 때 이 수를 유진수라고 한다. 입력으로 주어진 수가 유진수인지 아닌지 판별하는 코드를 작성하는 문제이다. 예를 들어 1221 같은 경우 12/21로 나눈다면, 1x2 = 2x1이므로 유진수이다. 1236의 경우 123/6으로 나눈다면, 1x2x3 = 6이므로 유진수이다. 주어진 수가 유진수인지 아닌지 알기 위해서는 앞뒤로 나누는 모든 경우의 수에 대해서,..
[python/파이썬] 백준 1246 온라인 판매 [문제 출처] https://www.acmicpc.net/problem/1246 1246번: 온라인 판매 첫째 줄에 정수 N(1 ≤ N ≤ 1,000)과 M(1 ≤ M ≤ 1,000)이 입력된다. 둘째 줄부터 M+1번째 줄까지 i+1번째 줄에는 Pi(1 ≤ Pi ≤ 1,000,000)가 입력된다. www.acmicpc.net [문제 풀이] N개의 달걀이 있고, 잠재적 고객 M명이 있다. 잠재적 고객은 각각 p[i]보다 가격이 비싸면 계란을 구매하지 않는다. 따라서 달걀 가격은 p[i]와 같거나 작아야 한다. 고객에게 최대 1개의 달걀을 판매한다고 할 때, 수익이 최대가 되는 가격과 그때의 수익을 찾는 문제이다. 수익이 최대가 되게 하려면 최대한 비싸게 팔아야 하며, 그 가격은 고객이 정한 최대 가격과 일..
[python/파이썬] 백준 1235 학생 번호 [문제 출처] https://www.acmicpc.net/problem/1235 1235번: 학생 번호 첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부 www.acmicpc.net [문제 풀이] 0부터 9 사이의 숫자로 이루어진 학생 번호가 있고, 학생 번호를 뒤에 k자리 수만 남기고자 한다. 모든 학생의 번호가 다른 k자리 문자열을 만족하는 가장 작은 k를 찾는 문제이다, 학생 번호의 길이는 주어지지 않으며, 학생의 수와 학생 번호들이 주어진다. k가 가장 작은 경우는 1로 마지막 한 자리로만 모든 학생이 구분되는 경우고, k가 가장 큰 경우는 기존..

반응형