반응형

파이썬/예제 28

백준 1546번 평균 - 헷갈리지말자

백준 1546번 / 평균 : https://www.acmicpc.net/problem/1546 이번 문제는 자신의 점수 중에서 최댓값을 고른 다음, 모든 점수를 각각 (원래 점수 / 최댓값 * 100)으로 변경한다. 이렇게 새로 계산된 점수들의 평균을 구하는 프로그램을 작성하는 문제이다. 문제를 푸는 아이디어는 간단하다. 과목의 개수 N과 각 과목의 원래 점수들을 입력받고, 입력받은 점수들 중에서 최댓값(a)을 찾는다. 이 최댓값을 이용하여 모든 원래 점수를 문제에서 제시된 방식대로 새로운 점수로 변환한다. 마지막으로, 이 새로운 점수들의 합을 구하고 과목의 개수 N으로 나누어 평균을 계산한다. 문제를 풀어나가는 흐름은 다음과 같다.시험 본 과목의 개수 N을 입력받는다.N개의 현재 성적을 공백으로 구분하..

파이썬/예제 2025.05.19

백준 10811번 바구니 뒤집기 - swap 매커니즘

백준 10811번 / 바구니 뒤집기 : https://www.acmicpc.net/problem/10811 이번 문제는 앞서 풀어본 바구니와 공 문제와 비슷하다. N개의 바구니가 있고, 각 바구니에는 1번부터 N번까지의 번호가 순서대로 적혀있다. M번 동안 특정 구간 [a, b]를 선택하여 그 구간에 있는 바구니들의 순서를 역순으로 뒤집는 작업을 한다. 모든 작업이 끝난 후, 1번 바구니부터 N번 바구니까지 각각 어떤 숫자가 적혀있는지 공백으로 구분하여 출력해야 한다. 이 또한 swap 매커니즘을 이용하면 간단히 해결할 수 있다. 문제를 푸는 흐름은 다음과 같다.바구니의 개수 N과 순서를 뒤집는 횟수 M을 입력받는다.크기가 N인 리스트를 만들고, 각 바구니의 번호에 해당하는 인덱스에 인덱스 +1을 넣어 ..

파이썬/예제 2025.05.19

백준 3052번 나머지 - 리스트 2개 사용하기

백준 3052번 / 나머지 : https://www.acmicpc.net/problem/3052 이번 문제는 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구하고, 그 다음에 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 만드는 문제이다. 이번 문제를 푸는 실마리는 두 개의 리스트를 같이 사용하는 것이다.두 개의 빈 리스트를 만들고, 첫 번째에는 10개의 수를, 두 번째에는 첫 번째 안에 들어있는 10개의 수를 나눈 나머지를 저장하는 것이다. 문제를 푸는 흐름은 다음과 같다. 10개의 입력된 숫자를 저장할 리스트와 서로 다른 나머지들을 저장할 리스트를 만든다.10번 반복하면서 다음을 수행한다:하나의 숫자를 입력받아 첫 번째 리스트에 추가한다입력받은 숫자를 42로 나눈 나머지를 계산한다.이 나머..

파이썬/예제 2025.05.19

백준 5597번 과제 안 내신 분...? - 역시나 리스트

백준 5597번 / 과제 안 내신 분...? : https://www.acmicpc.net/problem/5597 이번 문제는 X대학 M교수님의 프로그래밍 수업을 듣는 30명의 학생 중, 특별 과제를 제출한 28명의 출석번호가 주어졌을 때, 과제를 제출하지 않은 나머지 두 학생의 출석번호를 찾아내는 코드를 만드는 것이다. 출석번호는 1번부터 30번까지 있으며, 결과는 두 학생의 출석번호를 작은 번호부터 한 줄에 하나씩 출력해야 한다. 문제를 푸는 아이디어의 발상은 간단하다. 1~30이 담긴 리스트를 만들고, 입력받은 출석 번호들을 지워나가면 두 개만 남는 것을 이용한다. 문제를 푸는 흐름은 다음과 같다. 1부터 30까지의 숫자가 모두 포함된 리스트를 생성한다.28번 반복하면서 과제를 제출한 학생의 출석번..

파이썬/예제 2025.05.19

백준 10813번 공 바꾸기 - 스왑(swap) 사용하기

백준 10813번 / 공 바꾸기 : https://www.acmicpc.net/problem/10813 이번 문제는 N개의 바구니가 있고, 처음에는 각 바구니에 1번부터 N번까지의 번호가 순서대로 적힌 공이 하나씩 들어있는 상태에서 시작한다. 1번 바구니에는 1번 공이, 2번 바구니에는 2번 공이,,,, N번 바구니에는 N번 공이 들어있다. 이후 M번 동안 두 바구니를 선택하여 그 안에 들어있는 공을 서로 교환하는 작업을 수행한다. 모든 작업이 끝난 후, 1번 바구니부터 N번 바구니까지 각각 어떤 공이 들어있는지 공백으로 구분하여 출력해야 한다. 둘째 줄부터 M개의 줄에 걸쳐서 공을 교환할 방법이 주어진다. 각 방법은 두 정수 a,b로 이루어져 있으며, a번 바구니와 b번 바구니에 들어있는 공을 교환한..

파이썬/예제 2025.05.19

백준 10810번 공 넣기 - 리스트 & 조건문

백준 10810번 / 공 넣기 : https://www.acmicpc.net/problem/10810 이번 문제는 조금 복잡하다고 볼 수 있다.N개의 바구니를 가지고 M번 동안 공을 넣는 작업을 시뮬레이션한다. 각 바구니는 1번부터 N번까지 번호가 매겨져 있으며, 처음에는 모든 바구니가 비어있는 상태이다. 앞으로 M번 공을 넣고, 한 번 공을 넣을 때 공을 넣을 바구니 범위를 정하고, 정한 바구니에 모두 같은 번호가 적혀있는 공을 넣는다. 만약, 바구니에 공이 이미 있는 경우에는 들어있는 공을 빼고, 새로 공을 넣는다. 첫째 줄에 N (1 ≤ N ≤ 100)과 M (1 ≤ M ≤ 100)이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐서 공을 넣는 방법이 주어진다. 각 방법은 세 정수 a b c로 이루어져 ..

파이썬/예제 2025.05.19

백준 2562번 최댓값 - 리스트 활용하기

백준 2562번 / 최댓값 : https://www.acmicpc.net/problem/2562 이번 문제는 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 코드를 만드는 것이다. 수는 한 줄에 하나씩 입력되며, 최댓값과 그 위치(1부터 시작하는 순서)를 각각 따로 출력해야 한다. 문제를 풀어나가는 발상 자체는 간단하다. 최댓값을 찾고, 그 인덱스를 찾아 1을 더하면 된다. 문제를 해결하는 흐름은 다음과 같다.9개의 자연수를 저장할 빈 리스트를 만든다.반복문을 사용하여 9번 동안 각 줄에 입력되는 자연수를 리스트에 추가한다.리스트에서 max() 함수를 사용하여 최댓값을 찾는다.찾은 최댓값을 이용하여 list.index() 메소드로 해당 값의 인덱스를 찾..

파이썬/예제 2025.05.19

백준 10818번 최소, 최대 - 반복문이 정답은 아니다

백준 10818번 / 최소, 최대 : https://www.acmicpc.net/problem/10818 이번 문제는 N개의 정수가 주어졌을 때, 이 중에서 최솟값과 최댓값을 찾아 공백으로 구분하여 출력하는 프로그램을 만드는 것이다. 문제를 푸는 발상 자체는 누구나 간단하게 할 수 있다.다만 제목에도 적어놨듯이 반복문을 사용하는 것은 추천하지 않는다. 나는 처음에 반복문 두개를 중첩하여 리스트를 반복하여 순회하는 코드를 만들었다가 시간 초과가 발생하는 것을 보았고, 다른 방법으로 해결하였다. 아래가 처음 만든 코드이다.N = int(input())T = list(map(int, input().split()))max = 0min = 0for i in T: for j in T: if i >..

파이썬/예제 2025.05.19

백준 10871번 X보다 작은 수 - join()을 사용하자

백준 10871번 / X보다 작은 수 : https://www.acmicpc.net/problem/10871 이번 문제는 정수 N개로 이루어진 수열 A와 정수 X가 주어질 때, 수열 A에 포함된 수 중에서 X보다 작은 수를 모두 찾아 입력된 순서대로 출력하는 코드를 만드는 것이다. 이전에 풀었던 10807번 문제와 상당히 유사하다. 따라서 이전에 만들었던 코드를 활용하였다. 문제를 푸는 흐름은 다음과 같다.정수의 개수 N과 기준값 X를 입력받는다.N개의 정수로 이루어진 수열 A를 한 줄에 공백으로 구분하여 입력받고, 이를 리스트 형태로 저장한다.X보다 작은 수를 저장할 새로운 빈 리스트를 만든다.수열 A의 각 요소를 순회하면서, 현재 요소가 X보다 작은지 확인한다.만약 현재 요소가 X보다 작다면, 빈 리..

파이썬/예제 2025.05.19

백준 10807번 개수세기 - 리스트를 만들자

백준 10807번 / 개수세기 : https://www.acmicpc.net/problem/10807 이번 문제는 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어지고, 둘째 줄에는 정수가 공백으로 구분되어진 상태로 주어지고, 셋째 줄에는 찾으려고 하는 정수 v가 주어질 때 v가 몇 개 있는지 찾는 프로그램을 만드는 것이다. 문제를 푸는 흐름은 아래와 같다.정수의 개수 N을 입력받는다.N개의 정수를 한 줄에 공백으로 구분하여 입력받고, 이를 리스트 형태로 저장한다.찾으려는 정수 v를 입력받는다.개수를 셀 변수를 0으로 초기화한다.저장된 정수 리스트의 각 요소를 순회하면서, 현재 요소가 v와 같은지 확인하고, 같다면 count 변수의 값을 1 증가시킨다.리스트의 모든 요소를 확인한 후, count ..

파이썬/예제 2025.05.19
반응형