백준 문제 푼거 정리
if 문 사용해보기
1546번
생각한 방법
- 갯수를 입력 받고, 리스트 안에 모든 점수를 입력 받는다.
- 리스트에서 최대값을 찾는다.
max(list)
- 각각의 인덱스에 새로운 점수를 계산한다.
- 평균을 구해서 출력한다.
-> 이렇게 하면, 각각의 인덱스에 대해서 새로운 점수를 어떻게 계산할까 ? => lambda를 사용하면 된다.
※ 정답과의 오차는 10-2까지 허용
리스트 구하는 법 참고
-
sum() 함수와 len() 함수를 조합하여 이용 AVG = sum(a,0.0)/len(a)
-
numpy 모듈 활용
반올림하여 출력하는 방법
python은 방법이 다양하다. 3가지 방법을 찾았다.
print(format(AVG, '.2f'))
print(round(AVG, 2))
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