코딩테스트/백준 준비(과거)

(파이썬) 백준 10818, 2562, 2577, 3052, 1546, 8958, 4344

junjunjun 2021. 6. 26. 15:24
반응형

10818 최소, 최대

n = int(input())					
a = list(map(int,input().split()))  

print(min(a),end=" ")
print(max(a))

 

2562 최댓값

num = [int(input()) for i in range(9)]  # 한 줄 for문으로 바로 리스트에 담아준다
print(max(num))                         # 내장함수 max 이용
print(num.index(max(num))+1)            # max값의 인덱스 반환

 

2577 숫자의 개수

num = [int(input()) for i in range(3)]  # 숫자 3개 받기

a = [0,0,0,0,0,0,0,0,0,0]               # 0~9까지의 개수 리스트

calc = str(num[0]*num[1]*num[2])        # 숫자 곱 str처리
for i in calc:
    a[int(i)]+=1                        # 숫자에 맞는 a의 인덱스에 1씩 추가.
    
for i in range(10):                     # 0~9의 개수 출력
    print(a[i])

count함수가 있구나..

다시 풀면.

num = [int(input()) for i in range(3)]  # 숫자 3개 받기
calc = list(str(num[0]*num[1]*num[2]))  # 숫자 곱 str처리뒤 list로 변환 ex) 234 -> ['2','3','4']
for i in range(10): 
	print(calc.count(str(i)))       # count 함수를 사용하여 0~9까지의 개수 반환

 

3052 나머지

result = []	
for i in range(10):
    n = int(input())
    a = n%42 
    if a not in result:   # 중복 여부 처리             
        result.append(a)
print(len(result))

set 함수를 이용하자...!!

result = []	
for i in range(10):
    n = int(input())
    result.append(n%42)  # 나머지 값 다 넣어주고
print(len(set(result)))  # set으로 중복 없애준다.

 

1546 평균

n = int(input())
arr = list(map(int,input().split())) # 점수 공백 단위로 쪼개준 것을 int형으로 변환하고 list로 만듦
maxN = max(arr)

newArr = [arr[i]/maxN*100 for i in range(n)] # 조건 처럼 새로운 점수 생성
print(sum(newArr)/n)

 

8958 OX퀴즈

n = int(input())
resultArr = []      # 결과 점수 리스트

for i in range(n):
    score = 0
    scoreArr =[]   # 임시 점수 리스트
    ox = input()
    for i in ox:   # ex) "OOXOXXOO"
        if i=='O':
            score+=1                # 점수 증가
            scoreArr.append(score)  # 해당 인덱스 점수 추가
        elif i=='X':
            score = 0               # 점수 초기화
    resultArr.append(sum(scoreArr)) # 임시 점수 리스트의 합을 결과 리스트에 넣어줌
 
for i in range(n):
    print(resultArr[i])

굳이 배열을 많이 만들 필요가 없었다...

scoreArr를 변수로 만들어서 컨트롤 하는게 더 바람직하다.

또한 예제 출력을 하나씩 출력하게 만들어도 잘 돌아간다. (결과값을 따로 배열에 넣고 출력할 필요가 없음)

n = int(input())
resultArr = []      # 결과 점수 리스트

for i in range(n):
    score = 0
    tmp = 1
    ox = input()
    for i in ox:   # ex) "OOXOXXOO"
        if i=='O':
            score+=tmp                # 점수 증가
            tmp +=1
        else:
            tmp =1               # 점수 초기화
    resultArr.append(score) # 임시 점수 리스트의 합을 결과 리스트에 넣어줌
 
for i in range(n):
    print(resultArr[i])

 

4344 평균은 넘겠지

n = int(input())
for i in range(n):
    count = 0
    score = list(map(int,input().split()))
    score.pop(0)                           # 학생의 수 부분 제거
    avg = sum(score)/len(score)
    for i in range(len(score)):            # 평균보다 작은 학생수 구함
        if score[i] > avg:
            count+=1
    result = count/len(score)*100         
    print(f"{result:.3f}%")               # format을 잘 이용하자.

format을 이용하면 편리하게 출력가능

반응형