SW 마에스트로 준비(3)

백준 문제 푼거 정리

if 문 사용해보기

1546번

생각한 방법

  1. 갯수를 입력 받고, 리스트 안에 모든 점수를 입력 받는다.
  2. 리스트에서 최대값을 찾는다.max(list)
  3. 각각의 인덱스에 새로운 점수를 계산한다.
  4. 평균을 구해서 출력한다.

-> 이렇게 하면, 각각의 인덱스에 대해서 새로운 점수를 어떻게 계산할까 ? => lambda를 사용하면 된다.

※ 정답과의 오차는 10-2까지 허용

리스트 구하는 법 참고
  1. sum() 함수와 len() 함수를 조합하여 이용 AVG = sum(a,0.0)/len(a)

  2. numpy 모듈 활용

반올림하여 출력하는 방법

python은 방법이 다양하다. 3가지 방법을 찾았다.

  1. print(format(AVG, '.2f'))
  2. print(round(AVG, 2))
  3. print("#.2f" % AVG)
import sys


def r1(): return sys.stdin.readline()


# 1단계
N = int(r1())  # 갯수
list_A = list(map(int, r1().split()))  # 리스트로 입력 받기

# 2단계
Max = max(list_A)

# 3단계 각각의 인덱스에 새로운 점수를 계산.
list_B = list(map(lambda i: i/Max*100, list_A))
# print(list_B)

# 4단계 평균을 구한다.
AVG = sum(list_B, 0.0) / len(list_B)
print(format(AVG, '.2f'))
# print(round(AVG, 2))
# print("%.2f" % AVG)

다른 사람들은 어떻게 했나. 참고 ->

for i in range(num)
	리스트[i] = 리스트[i]/max*100
    sum += sum[i]

이런 식으로 값을 구했더라.

1110번

생각한 방법 1. N을 입력받고 10으로 나눠서 몫과 나머지를 구한다. 나누어 떨어지는 수가 없을 경우, 즉 한자리 숫자일 경우 나머지를 몫으로 대체하고, 나머지는 0으로 한다. 2. 몫과 나머지를 더해서 새로운 숫자를 구한다. 이 때 N의 나머지에 *10을 한 뒤 새로운 숫자를 더한다. 3. 이 숫자와 N이 같은 지 확인하고 아니면 길이를 더해준다. 4. 같은 숫자가 나온 경우 길이를 출력해준다.

-> 재귀함수를 써야하는 것 아닌가? -> 반복문 돌리고 하면된다

import sys


def r1(): return sys.stdin.readline()


N = int(r1())
length = 1
a = N
while True:
    if(N < 10):
        length += 1
        resultNum = N*10+N
        N = resultNum
        # print("처음나온 수 :", N)
        if(resultNum == a):
            print(length-1)
            break
    else:
        Q = int(N/10)
        R = N % 10
        newNum = (R + Q) % 10
        resultNum = R*10+newNum
        # print("확인할 수:", resultNum)
        if(resultNum == a):
            print(length)
            break
        else:
            length += 1
            N = resultNum
            # print("나왔니", N)


참고자료

리스트 구하는 법 참고 블로그 : https://m.blog.naver.com/PostView.nhn?blogId=minic3000&logNo=220974973058&proxyReferer=https%3A%2F%2Fwww.google.com%2F

1546번 참고 블로그 : https://webolutions.tistory.com/48

0%