카테고리 없음

[코드트리챌린지] 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

https://www.codetree.ai/missions/4/problems/multiple-of-two-arrays?&utm_source=clipboard&utm_medium=text

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

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()

 

 

 

 

 

 

#코드트리 #코딩테스트 #코딩테스트실력진단