190103 백준 알고리즘 문제풀기

|

Baekjoon 알고리즘 문제풀기

[1000] A+B / [1001] A-B / [10998] AxB / [1008] A/B / [10869] 사칙연산

문제

  • 두 정수 A와 B를 받고, 연산하여 출력하는 프로그램

  • 다중 입력을 원할경우 map(형식, input().split())을 활용한다.

정답

a, b = map(int, input().split())
print(a+b)
print(a-b)
print(a*b)
print('%0.9'%(a/b))
print(int(a/b))
print(a%b)

[10172] 개

문제

  • 아래 주어진 개를 출력하는 프로그램

  • 파이썬에서 ‘\‘를 출력하고자 할때는 ‘\\‘로 입력해야 한다.
  • 줄 개행이 포함된 출력을 원할경우 print('''내용''')을 이용한다.

|\_/|
|q p|   /}
( 0 )"""\
|"^"`    |
||_/=\\__|

정답

print('''|\\_/|
|q p|   /}
( 0 )"""\\
|"^"`    |
||_/=\\\\__|''')

[11718] / [11719] 그대로 출력하기

문제

  • 주어진 입력 그대로 출력한다.
  • 최대 100줄, 한 문장은 100자를 넘지 않는다.

정답

cnt = 1
while True:
    print(input())
    cnt += 1
    if (cnt == 100):
        break
  • 하지만 계속 런타임 에러가 나서 아래의 코드로 제출했다…
    while True:
      try:
          print(input())
      except EOFError:
          break
    

[10430] 나머지

문제

  • (A+B)%C는 (A%C + B%C)%C 와 같을까?
  • (A×B)%C는 (A%C × B%C)%C 와 같을까?

정답

A, B, C = map(int, input().split())
print((A+B)%C)
print((A%C + B%C)%C)
print((A*B)%C)
print((A%C*B%C)%C)

[2839] 설탕배달

문제

  • 주어진 설탕 무게를 3, 5 kg 봉지에 나눠 담어야 한다.
  • 단, 갯수는 최대한 적게 되도록 한다.(18kg일 경우 3kg 6개가 아닌 5kg 3개, 3kg 1개로 총 4개)
  • 단, 정확하게 N개의 봉지로 나눌 수 없는경우엔 -1을 출력한다.

  • 처음에 문제를 잘못 이해해서 애를 많이 먹었다.
  • 최대한 큰 봉지(5kg)에 담고, 남은 설탕이 3kg봉지에 딱 맞아떨어지지 않게되면 5kg 봉지를 하나씩 깐다.
  • 만약 5kg봉지를 다 깟는데도 3kg으로 나눠떨어지지 않는 경우에는 3kg 봉지로 정확히 담을 수 없는 상황이므로 -1을 출력한다.

정답

a = int(input())

f = a//5
fr = a%5
while True:
    t = fr//3
    tr = fr%3
    
    if (tr!=0):
        f -= 1
        fr += 5
    else:
        result = f + int(t)
        break
    if (f<0):
        result = -1
        break

print(result)