알고리즘 마라톤 1일차

Sean·2021년 6월 14일
0

항해99

목록 보기
3/12
post-thumbnail

1번

사칙 연산

파이썬3에서는 나눗셈이 완전히 나누어떨어져도 실수가 나온다.
// (버림 나눗셈, floor division)을 이용하여 나눗셈 결과에서 소수점 이하를 버린다.
몫과 나머지 중 몫을 구할 때 '버림 나눗셈'을 사용하면 된다.

몫과 나머지를 함께 구하는 방법으로 divmod(나누어지는 수, 나누는 수)가 있다. 결과는 튜플 형태로 나오며 quotient, remainder = divmod(5, 2) 형식으로 출력이 가능하다.

실수 표현에는 오차가 발생할 수 있으므로 오차에 대한 적절한 처리가 필요하다.
예로, 0.1 + 0.20.3이 나와야 할 것 같지만 실제로는 0.30000000000000004가 나온다.
이런 현상이 나오는 이유는 1부터 10까지의 정수는 10개지만 실수는 무한히 많기 때문에 유한개의 비트로 정확하게 표현할 수 없기 때문이다. 따라서 실수는 유한개의 비트를 사용한 근사값으로 표현된다.

프롬프트 x = input('문자열을 입력하세요: ') 로 입력을 받을 수 있다.

변수1, 변수2 = 변수2, 변수1 형식으로 두 변수의 값을 바꿀 수 있다.

변수1, 변수2 = input().split() 형태로 입력 값을 변수 두 개에 저장할 수도 있다.

map을 함께 사용하면 받은 문자열을 정수로 변환하는 것까지 한 번에 가능하다.
a, b = map(int, int('숫자 두 개를 입력: ').split(','))

2번

곱셈

1번에서 배운 개념으로 충분히 풀 수 있는 문제

a = int(input())
b = input() # 쪼개기 좋게 문자열 형태로 남겨둠

print(a * int(b[2]))
print(a * int(b[1]))
print(a * int(b[0]))
print(a * int(b))

3번

알람 시계

if m > 44:
    print(h, m-45)
else:
    if h > 0:
        print(h-1, m+15)
    else:
        print(23, m+15)

4번

더하기 사이클

이번 문제는 헷갈려서 시간이 오래걸렸는데 변수가 많이 사용되기 때문에 변수 값이 어떻게 달라지는지 표를 그리면 명확해진다.

input_val = int(input())
answer = input_val
count = 0
while True:
    count += 1
    left = answer // 10
    right = answer % 10
    input_sum = left + right
    # print('input_sum', input_sum)
    sum_right = input_sum % 10
    result = (right * 10) + sum_right
    # print('result', result)
    if result == input_val:
        break
    else:
        answer = result
print(count)

5번

평균은 넘겠지

case = int(input())
for i in range(case):
    students = list(map(int, input().split()))
    avg = sum(students[1:]) / students[0]
    cnt = 0
    for j in students[1:]:
        if j > avg:
            cnt += 1

    print(str('%.3f' %round(100 * (cnt/students[0]), 3)) + '%')
profile
Win or Learn

0개의 댓글

관련 채용 정보