본문 바로가기

매일매일 (Everyday)

[BOJ] - 입출력과 사칙연산 - Python

  백준 알고리즘 문제 풀이를 시작했습니다. 한창 공채시즌이여서 너무 바빴네요.

NCS도 해야하고 코딩도 풀어봐야하고 데이터 분석 대회도 준비도해야하고 정신이 하나도 없네요.

매일 꾸준히 데이터 스터디하고 있었고 조만간 "공유 자전거 대여량 예측" 프로젝트 결과물이 나올 예정입니다~

RMSLE 값이 약 0.39 나와서 기분이 좋더라고요 ㅎㅎ(대회 수상작이 아마 0.31인가 그랬던 것 같아요 이제 시작 ㅠㅠ)

 

  코드업 100제 풀고 무작정 다이나믹이나 그리디 풀려고하니까 너무 어렵더라고요. 그래서 백준 사이트의 낮은 단계부터 시작하려고 합니다.

 

 

 서론이 길었네요. 이제 오늘 풀었던 백준 알고리즘 문제 리뷰 시작하겠습니다.

 

(`틀린 풀이` 는 제 시행착오입니다.)

 

2557: Hello World

# 2557: Hello World
print("Hello World!")

 

 

10718: We love kriii

# 10718: We love kriii

    ## 1.
print("강한친구 대한육군", "강한친구 대한육군", sep = '\n')

    ## 2.
print("강한친구 대한육군\n강한친구 대한육군")

    ## 3.
for i in range(2) :
    print("강한친구 대한육군")

    ## 4.
print("강한친구 대한육군\n"*2)

위 두 문제는 딱히 설명할게 없어서 그냥 넘어가겠습니다.

 

 

 

10171: 고양이

 

# 10171: 고양이

    ## 틀린 풀이
print("\\", "/\\" , sep = '    ')
print(" )", "( ')", sep = '  ')
print("(", "/", ")", sep = '  ')
print(" \\", "(__)|")

    ## 다시 풀어서 맞은 풀이
print("\\    /\\")
print(" )  ( ')")
print("(  /  )")
print(" \\(__)|")

    ## 다른 사람 풀이
print("\\    /\\\n )  ( ')\n(  /  )\n \\(__)|")

이 문제에서 기억남는 2가지 사실이 있는데,

1. '\' 를 출력하려면 앞에 \ 를 덧붙여야 하는 점

2. 문자열 앞에 r 붙여서 위 작업을 안해도 된다는 점 (원시 문자열로 처리됨)

 

기본인 것부터 풀어보니까 새로운 사실들을 알아서 '더 기초적인 것 부터 시작해야겠구나' 를 느꼈어요.

 

 

 

10172: 개

    ## 틀린 내풀이
print("|\\_/|")
print("|q p|   /}")
print("( 0 )\"\"\"\\")
print("|\"^\"\`   |")
print("||_/=\\\\__|")

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

    ## 맞은 내풀이
print("|\\_/|\n|q p|   /}\n( 0 )\"\"\"\\\n|\"^\"`    |\n||_/=\\\\__|")

    ## 다른 사람 풀이, 
print('''|\_/|
|q p|   /}
( 0 )"""\\
|"^"`    |
||_/=\\\__|''')

    ## 다른 풀이, 문자열 앞에 r이 붙으면 \ 처리 효과
print(r"|\_/|")
print(r"|q p|   /}")
print('( 0 )\"\"\"\\')
print("|\"^\"`    |")
print(r"||_/=\\__|")

    ## 신박한 풀이
print('%c%c%c%c%c' % (124,92,95,47,124), end='\n')
print('%c%c%c%c%c%c%c%c%c%c' % (124,113,32,112,124,32,32,32,47,125), end='\n')
print('%c%c%c%c%c%c%c%c%c' % (40,32,48,32,41,34,34,34,92), end='\n')
print('%c%c%c%c%c%c%c%c%c%c' % (124,34,94,34,96,32,32,32,32,124), end='\n')
print('%c%c%c%c%c%c%c%c%c%c' % (124,124,95,47,61,92,92,95,95,124), end='\n')

마지막 풀이가 참 신선하네요 ㅋㅋㅋ

 

 

 

1000: A+B

# 1000: A+B
A, B = input().split()
A = int(A)
B = int(B)

print(A+B)

    ## 다른풀이
print(eval('+'.join(input())))

 

 

1001 : A-B

# 1001 : A-B
A, B = input().split()
A = int(A)
B = int(B)

print(A-B)

 

 

1099: A×B

# 1099: A×B
A, B = input().split()
A = int(A)
B = int(B)

print(A*B)

 

 

1008: A/B

# 1008: A/B

A, B = input().split()
A = int(A)
B = int(B) 

print(A/B)

 

 

10869: 사칙연산

# 10869: 사칙연산
A, B = input().split()
A = int(A)
B = int(B)
print(A+B)
print(A-B)
print(A*B)
print(A//B)
print(A%B)

    ## 다른풀이
a,b=map(int,input().split())
print(a+b,a-b,a*b,a//b,a%b)

 

 

10430: 나머지

# 10430: 나머지
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)

 

 

2588: 곱셈

# 2588: 곱셈
A = int(input())
B = int(input())
print(A*(B%10))
print(A*((B%100) - (B%10)) // 10)
print(A*(B//100))
print(A*B)

    ## 다른 풀이
a,b=map(int,open(0))
print(b%10*a,b%100//10*a,b//100*a,b*a)

 

나머지 문제는 사칙연산 기호만 잘 숙지한다면 금방 풀 수 있는 문제였습니다.

 

파이썬 사칙연산 기호는,

 

+ 더하기
- 빼기
* 곱하기
/ 나누기
// 나눈 후 소수점  이하 버리고 정수 부분만
% 나머지

**  는 거듭제곱 입니다.