카테고리 없음
[코드트리챌린지] 8회차
포포252
2023. 10. 28. 17:34
실력진단
완전탐색문제 - 틀림.. ]
n= int(input())
arr=[]
#주어진 격자 생성
for _ in range(n):
arr.append(list(map(int,input().split())))
#말의 위치
r,c= map(int,input().split())
r,c= r-1,c-1
#출력용 격자
arrPrint = [[0 for _ in range(n)] for _ in range(n)]
#탐색용
di= [1,-1,0,0,1,1,-1,-1]
dj =[0,0,1,-1,1,-1,1,1]
qu = [(r,c)]
#탐색
while qu: #큐안에 뭔가 있을동안 계속 탐색
r,c= qu.pop(0) #킹의 위치
arrPrint[r][c] =1 # 값을 1로 변경
#상하좌우 탐색해서 0이면 큐안에 넣기
for k in range(len(di)):
a,b=r+di[k], c+dj[k]
if 0 <= a < n and 0 <= b < n:
if arr[a][b] ==0:
qu.append((a,b))
arr[a][b] = -1 #방문표시
#출력
for i in range(n):
print(*arrPrint[i],sep=" ")
재귀 문제
n= int(input())
arr= [0 for _ in range(n)]
#재귀 함수
#현재상태
def f(idx): # 0~ (idx-1) 까지는 탐색했고
# idx 부터 (n-1) 까지 조건에 맞게 탐색할 함수
# 종료조건 : 0~ (n-1)까지 탐색했다면 출력 후 종료
if idx ==n:
if (co(3) >= co(2) >=co(1)):
print(*arr,sep="")
return
#재귀 탐색
for i in range(1,4):
arr[idx] = i #설정
f(idx+1) # 탐색
arr[idx] = 0 #복구
#개수 세는 함수
def co(num):
cnt =0
for elem in arr:
if elem == num:
cnt +=1
return cnt
f(0) #함수호출
공부한내용 1
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
내가짠 코드
#배열 두개
twoList = [[] for _ in range(2)]
#각 배열 저장
for i in range(2):
li =[]
#각 배열 하나 - 3줄로 구성
for _ in range(3):
arr = list(map(int,input().split()))
li.append(arr)
twoList[i]=li
if i ==0:
input() # 간격이 하나주어짐... -> 날려버려야됨..
# 배열 곱하기
gop=[[1 for _ in range(3)] for _ in range(3)]
for i in range(3):
for j in range(3):
gop[i][j]= twoList[0][i][j] * twoList[1][i][j]
# 배열 출력
for i in range(3):
for j in range(3):
print(gop[i][j],end=" ")
print()
주의할점
입력으로 빈 엔터키도 하나 주어진다... 걔를 날려줘야함..
참고
여기선 for 문없이 arr1, arr2 각각 정의하였다..
& 리스트 컴프리헨션을 이용해서.. 인풋받자마자 바로 리스트 만듦... <- 이건 배울점!!!
중간에 빈칸은 input()으로 받아줬다...
# 첫 번째 2차원 배열을 구현해 정수를 입력받습니다.
arr_1 = [
list(map(int, input().split()))
for _ in range(3)
]
input()
# 두 번째 2차원 배열을 구현해 정수를 입력받습니다.
arr_2 = [
list(map(int, input().split()))
for _ in range(3)
]
# 2차원 배열을 구현합니다.
arr_3 = [
[0 for _ in range(3)]
for _ in range(3)
]
# 두 배열의 곱을 새로운 배열에 담습니다.
for i in range(3):
for j in range(3):
arr_3[i][j] = arr_1[i][j] * arr_2[i][j]
# 새로운 배열을 출력합니다.
for row in arr_3:
for elem in row:
print(elem, end=" ")
print()
공부한 내용 2
https://www.codetree.ai/missions/4/problems/compare-two-grid?&utm_source=clipboard&utm_medium=text
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
내가짠 코드
n,m =map(int,input().split())
# 격자 받기
arrList= [ [list(map(int,input().split())) for _ in range(n)] for _ in range(2)]
#print(arrList)
#동일값 찾기
findArr=[[0 for _ in range(m)] for _ in range(n)]
for i in range(n):
for j in range(m):
####3print(arrList[0][i][j], arrList[1][i][j],arrList[0][i][j] == arrList[1][i][j])
if arrList[0][i][j] == arrList[1][i][j]:
findArr[i][j] = 0
####print(True)
else:
findArr[i][j] = 1
####print(False)
####print(findArr[i][j])
####print(findArr)
#출력 -> 출려문에 뭔가 문제..
for i in range(n):
###for i in range(m): # i,j 구분잘하기...
for j in range(m):
print(findArr[i][j],end=" ")
print()
#코드트리 #코딩테스트 #코딩테스트실력진단