[백준]10870, 25501, 2798, 2231, 연립방정식, 체스판 다시 칠하기
2023. 4. 13. 16:30ㆍ코딩테스트
#피보나치, 10870
def fbnc(num):
if(num==0):
return 0
elif(num==1):
return 1
else:
return fbnc(num-1)+fbnc(num-2)
n = int(input())
print(fbnc(n))
n = int(input())
result = 0
flist = [0,1]
if(n==0):
print(0)
else:
for i in range(n-1):
flist.append(flist[i]+flist[i+1])
print(flist[-1])
for 문 버전, 재귀 버전
#25501
def recursion(s, l, r):
global idx
idx += 1
if l >= r: return 1
elif s[l] != s[r]: return 0
else: return recursion(s, l+1, r-1)
def isPalindrome(s):
return recursion(s, 0, len(s)-1)
n = int(input())
for i in range(n):
idx=0
strr = input()
print(isPalindrome(strr), idx)
#2798
from itertools import combinations
a, b = map(int, input().split())
ainput = list(map(int,input().split()))
plist = list(combinations(ainput, 3))
dis = 300001
result = 0
for i in plist:
if(sum(i)==b):
result= b
break
else:
if( (b - sum(i))<dis and sum(i) <= b):
dis = (b - sum(i))
result = sum(i)
print(result)
#2231번
n = int(input())
slist=[]
for i in range(n//2,n+1):
strl=list(str(i))
temp=( i + sum(list(map(int,strl))))
if (temp==n):
slist.append(i)
if(not slist):
print(0)
else:
print(slist[0])
연립방정식 문제 오류1, 런타임에러
import numpy as np
a,b,c,d,e,f = map(int, input().split())
x, y = 0,0
A = np.array([[a, b], [d, e]])
C = np.array([c, f])
x, y = np.linalg.solve(A, C)
print(int(x),int(y))
오류2 런타임에러
이건 나눌때 0으로 나눠지는 부분의 경우의 수만 제거해주면 해결되긴 한다.
a,b,c,d,e,f = map(int, input().split())
temp=(b*d)-(e*a)
sum = (c*d)-(f*a)
y=sum//temp
x=(c-(y*b))//a
print(x,y)
브루트 포스처럼 풀어보자
a,b,c,d,e,f = map(int,input().split())
for i in range(-999,1000):
for j in range(-999,1000):
if a*i + b*j == c and d*i + e*j == f:
print(i,j)
체스판 다시칠하기 문제는... 문제자체를 이해를 잘못하고 있었다.
게다가 갑자기 구글 코랩이 이상해져서 idle로 실행을 하는데 불편한 채로
계속 삽질하다가 다른 정답을 보게 되었다.
n, m = map(int, input().split())
board = []
result = []
for _ in range(n):
board.append(input())
for i in range(n-7):
for j in range(m-7):
draw1 = 0
draw2 = 0
for a in range(i, i+8):
for b in range(j, j+8):
if (a + b) % 2 == 0:
if board[a][b] != 'B':
draw1 += 1
if board[a][b] != 'W':
draw2 += 1
else:
if board[a][b] != 'W':
draw1 += 1
if board[a][b] != 'B':
draw2 += 1
result.append(draw1)
result.append(draw2)
print(min(result))
#(a + b) % 2 == 0, 짝홀수 가려지면서 이에 해당되는 것들은 줄눈(?) 대각선으로 그어짐, 새로 알아감
'코딩테스트' 카테고리의 다른 글
프로그래머스 H-index (0) | 2024.05.20 |
---|---|
[백준] 15894, 9063, 10101, 5073, 14215, N-Queen (0) | 2023.04.12 |
[백준, 프로그래머스] 문제풀이 (0) | 2023.04.11 |