문제에서 요구하는 조건을 그대로 구현해주면 되는 문제였다.
n = int(input())
count = 0
for b in range(1,500):
for a in range(1,500):
if a**2 == b**2 + n:
count+=1
print(count)
빨간색 타일 수는 갈색 타일을 감싸는 형태이기 때문에 갈색 타일이 어떤 형태로 방을 채우고있는지가 중요하다. 빨간색 타일의 수는 4 + 2(갈색타일의 가로길이 + 갈색타일의 세로길이)
이기 때문이다. 완전 탐색을 하면서 갈색타일이 나누어 떨어지는 수를 찾은 후 가로, 세로 길이를 지정했다. 그 후, 빨간색 타일 개수와 대조시켜서 방의 크기를 구하도록 하였다.
r, b = map(int,input().split(' '))
w, h = 0, 0
for i in range(1,b+1):
if b % i == 0:
result = 4 + 2*((b//i)+i)
if result == r:
w = (b//i)+2
h = i+2
break
if w >= h:
L = w
W = h
else:
L = h
W = w
print('{} {}'.format(L,W))
이동하면 지점의 위치는 각각 p1+(n*x)
,p2+(n*y)
점화식의 형태이다. 공통적으로 지나는 지점 중 가장 가까운 지점은 min()
함수로 출력해준다. 반복문을 돌렸을 때, 시간초과임을 확인하고 최대 케이스를 지정해서 문제를 해결하였다.
x,y,p1,p2 = map(int,input().split())
a = [p1]
b = [p2]
count = 0
while True:
p1 += x
p2 += y
a.append(p1)
b.append(p2)
if p1 in b or p2 in a:
p = min(p1,p2)
break
elif count > 1000:
p = -1
break
count +=1
print(p)
입력 줄에 대문자와 소문자를 구분해놓았지만 모두 세어야하기 때문에, 문자의 형태를 통일시켜줄 필요가 있었다. 하나의 소문자로 입력이 주어지므로 영어문장을 모두 소문자로 통일시켜서 개수를 세었다.
while True:
word= input()
alphabet = word[0]
if alphabet== '#':
break
word = word[2:].lower()
count = word.count(alphabet)
print('{} {}'.format(alphabet, count))
반복문을 돌리는 데 이전 점수의 합과 현재 점수의 합을 비교하는 방법으로 문제를 해결하였다. 비교를 할 때는 절댓값을 활용하였다.
num = [int(input()) for _ in range(10)]
count = 0
for i in range(10):
pre = count
curr = count + num[i]
if curr > 100:
if abs(100 - pre) < abs(100 -curr):
count = pre
break
else:
count = curr
break
count+= num[i]
print(count)