오류 및 알고리즘정리본
#11 백준 영수증/색종이/팰린드롬인지 확인하기
츄98
2023. 4. 27. 22:10
1. 영수증
준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다.
영수증에 적힌,
- 구매한 각 물건의 가격과 개수
- 구매한 물건들의 총 금액
을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.
import sys
input = sys.stdin.readline
total= int(input())
type = int(input())
sum = 0
for i in range(type):
a, b = map(int, input().split())
sum += a*b
print("Yes") if sum == total else print("No")
import sys
sys.stdin.readline()을 사용하면, input 시간복잡도를 줄일 수 있다~
실제로 그냥 input()을 한 것과 input = sys.stdin.readline을 한 것을 비교해보니 0.5초 정도의 차이가 있었다.
2. 색종이

먼저 크기가 100인 이차원배열을 만들었다.
그리고 겹치는 부분을 하나의 영역이라 생각하여 코드를 작성하였다.
import sys
input = sys.stdin.readline
paper = [[0]*100 for i in range(100)]
for i in range(int(input())):
a, b = map(int, input().split())
for i in range(10):
for j in range(10):
paper[a+i][b+j] = 1
r=0
for i in paper:
r += sum(i)
print(r)
3. 펠린드롬인지 확인하기
알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오. 팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다.
level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.
아이디어: reverse를 했을 때 서로 같으면 팰린드롬이고 다르면 팰린드롬이 아니다.
import sys
input = sys.stdin.readline
word = list(input())[:-1]
reversed_word = list(reversed(word))
if word == reversed_word:
print(1)
else:
print(0)
word = list(input())[:-1] 이렇게 한 이유는,
word = list(input()) 이렇게 하고, input값으로 level 을 넣으면
['l', 'e', 'v', 'e', 'l', '\n'] 이러한 배열이 출력이 된다.
내가 원하는 것은 level이 담긴 리스트이므로 word = list(input())[:-1] 이렇게 해주었다.