본문 바로가기

programming/algorithm

[ algorithm ] 백준 단계별 문제 풀이 (1차원 배열 1탄)

[ algorithm ] 백준 단계별 문제 풀이 (1차원 배열 1탄)

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 백준에서 1차원 배열에 관련된 문제들의 풀이를 살펴보려 합니다.

 

파이썬3 를 사용해 문제 풀이를 진행하겠습니다.

 

문제마다 링크를 걸어두었으니 문제를 살펴보시고 문제를 푼 다음에 저와

 

풀이를 비교해 보시는 걸 추천드립니다.


차근차근 풀어봅시다.

 

algorithm
알고리즘



백준 BAEKJOON 10807

 

https://www.acmicpc.net/problem/10807

 

 

10807번: 개수 세기

첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거

www.acmicpc.net

 

문제 해석

 

N개의 정수가 주어질 때 V가 몇 개 존재하는지 구하는 문제

 

풀이

 

import sys

a = int(sys.stdin.readline())
b = list(map(int, sys.stdin.readline().rstrip().split()))
c = int(sys.stdin.readline())
count = 0
for x in b:
    if c == x:
        count += 1
        
print(count)

 

풀이 해석 및 팁

 

map 함수를 사용해 정수형으로 숫자들을 받아오고 리스트로 b에 대입해 줍니다.

숫자의 리스트 b를 for문에 이용해서 찾으려는 숫자와 같은지 비교하면서 카운트를 세어 문제 해결

백준 BAEKJOON 10871

 

https://www.acmicpc.net/problem/10871

 

 

10871번: X보다 작은 수

첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

문제 해석

 

N개로 이루어진 수열에서 X보다 작은 수를 모두 출력하는 문제 

 

풀이

 

import sys

a, b = map(int, sys.stdin.readline().rstrip().split())
c = list(map(int, sys.stdin.readline().rstrip().split()))

for x in c:
    if x < b:
        print(x, end=' ')

 

풀이 해석 및 팁

 

문제에서 주어지는 수열을 리스트 c에 대입하고 for 문을 사용해 숫자 크기를 비교하면서 원하는 답을 출력
print문에서 end=' '를 사용해 줄 바꿈 대신 공백을 뒤에 붙여주는 것을 활용합니다.

백준 BAEKJOON 10818

 

https://www.acmicpc.net/problem/10818

 

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

문제 해석

 

주어진 수열에서 최댓값과 최솟값을 구하는 문제

 

풀이

 

import sys

n = int(sys.stdin.readline())

l = list(map(int, sys.stdin.readline().rstrip().split()))

print(f"{min(l)} {max(l)}")

 

풀이 해석 및 팁

 

수열을 받아서 리스트로 변환해 주고 min 함수와 max 함수를 사용해 최솟값 최댓값을 출력합니다.
출력 시에는 문자열 포멧팅을 사용했습니다.

백준 BAEKJOON 2562

 

https://www.acmicpc.net/problem/2562

 

 

2562번: 최댓값

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어

www.acmicpc.net

 

문제 해석

 

9개의 서로 다른 자연수가 한 줄 한줄 주어지면 그 중에 최댓값을 찾고 몇 번째 수인지 출력

 

풀이

 

import sys

l = []

while True:
    try:
        l.append(int(sys.stdin.readline()))
    except:
        break

print(max(l))
print(l.index(max(l)) + 1)

 

풀이 해석 및 팁

 

while문을 사용해 문제에서 주어지는 한줄 한 줄을 리스트에 추가합니다.
try except 문을 사용해 더 이상 받아들일 줄이 없을 때 while 문의 반복을 중지합니다.
max 함수를 사용해 리스트에서 최댓값을 출력하고
index 함수를 사용해 최댓값이 몇 번째 수인지 출력합니다.

여기까지 백준 단계별 문제 1차원 배열에 대한 문제 풀이 1탄이었습니다.

 

1차원 배열을 사용하는 문제들이기에 반복문과 리스트를 주로 사용해 풀이하였습니다.

 

다음시간에 1차원 배열 문제 2탄의 내용을 가지고 찾아오겠습니다.

 

감사합니다.

반응형