Programming/Algorithm 237

[백준] #2108 통계학 python

https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 📕 설명 📕 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 *** 최빈값은 Counter를 이용하여 풀이하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 from collections import Counter import sys N = int(i..

[백준] #10989 수 정렬하기 3 python

https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 📕 설명 📕 이전 시간 초과를 고려하여 합병 정렬을 사용한 풀이에서의 코드를 사용하자, 메모리 초과가 발생하였다. 메모리를 줄이기 위해 append 사용을 하지 않았다. for 문에서 append 함수를 사용하게 되면, 메모리가 재할당 되어 메모리에 효율적이지 않다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 import sys N = int(input()) src = [0] * 10001 for _ in range(N): src..

[백준] #2751 수 정렬하기 2 python

https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 📕 설명 📕 시간 초과를 고려하여 합병 정렬을 이용하여 풀이하였다. 꽤 시도를 많이 하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 import sys N = int(input()) src = [] def sorting(src): if len(src) < 2: return src mid = len(src) // 2 left = sorting(src[:mid]) right = sorting(src[..

[백준] #25305 커트라인 python

https://www.acmicpc.net/problem/25305 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net 📕 설명 📕 1. 두 개의 값 받기 2. 정렬 후 뒤에서 인덱스로 값 뽑기 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N, standard = map(int, input().split()) num_list = list(map(int, input().split())) print(sorted(num_list)[N - standard])

[백준] #2587 대푯값 2 python

https://www.acmicpc.net/problem/2587 2587번: 대표값2 어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + www.acmicpc.net 📕 설명 📕 1. 수 sum 함수로 전체 합 5로 나누기 2. 정렬 후 2번째 index값 중앙값으로 내놓기 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 src = [] for _ in range(5): src.append(int(input())) print(sum(src)//5) print(sorted(src)[2])

[백준] #2750 수 정렬하기 python

https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 📕 설명 📕 1. 정렬할 source를 list에 넣는다. 2. sorted로 정렬 후 하나씩 출력한다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 src = [] for _ in range(int(input())): src.append(int(input())) for i in sorted(src): print(i)

[백준] #2563 색종이 접기 python

https://www.acmicpc.net/problem/2563 2563번: 색종이 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net 📕 설명 📕 1. 색종이인 만큼 색칠한다고 생각하자. 2. 100 x 100의 종이에 색칠을 한다는 개념으로 2차원 배열을 만든다. 3. 색칠 안 된 부분을 0, 색칠된 부분을 1로 칠해준다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N = int(input()) src = [[0]*101 for _ in range(101)] result = 0 for _ in range(N): x, y = map(int ,in..

[백준] #2566 최댓값 python

https://www.acmicpc.net/problem/2566 2566번: 최댓값 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. www.acmicpc.net 📕 설명 📕 1. 2차원 배열을 각각 9x9 값에 맞게 입력 받는다. 2. 최댓값과 그 좌표를 기억해준다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 max = -100000 cnt = 0 info = [0, 0] for i in range(9): list_9 = list(map(int, input().split())) cnt += 1 count = 1 for j in list_9: if max < j: max = j info[0..

[백준] #2738 행렬 덧셈 python

https://www.acmicpc.net/problem/2738 2738번: 행렬 덧셈 첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같 www.acmicpc.net 📕 설명 📕 1. 2차원 배열을 각각 N, M 값에 맞게 만든다. 2. 각 원소를 더할 matrix를 만들어 더해준다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N, M = map(int, input().split()) matrix_A = [[] for _ in range(N)] matrix_B = [[] for _ in range(N)] for i in range(N): A_list = lis..

[백준] #6588 골드바흐의 추측 2 python

https://www.acmicpc.net/problem/6588 6588번: 골드바흐의 추측 각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰 www.acmicpc.net 📕 설명 📕 1. 입력 받은 수를 // 2 연산하여 값을 각각 저장한다. 2. 해당 각각 저장한 값이 소수인지를 확인하며 둘 다 소수라면 print하고 끝낸다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 from sys import stdin arr = [True] * 1000001 for i in range(2, 1001): if arr[i]: for j in range(i + i,10..