본문 바로가기

Algorithm/코드업(Code up)12

[ 파이썬(python) ] 코드업 1484 - 2차원 배열 달팽이 채우기 4-1 📍 1484 : [ 기초 - 배열 연습 ] 2차원 배열 달팽이 채우기 4-1 2차원 배열 안에 달팽이 모양으로 값을 채우는 문제인데, 사실 이 문제를 풀기 위해 1460부터 쭉 풀었다. 총 2가지 유형으로 나눠서 풀 수 있다. ⚡️ while문으로 row, column 따로따로 반복문 돌리기 n * m의 크기로 값이 0인 2차원 배열 arr을 선언한다. row(행), column(열)을 각각 0과 -1로 초기화했는데, 이유는 1씩 증가하면서 해당 위치에 cnt가 들어가기 때문이다. 그리고 중간에 행과 열의 크기를 -1씩 감소시켰는데, 반복문이 진행될때마다 채워야 하는 값의 크기가 줄어들기 때문이다. (0, 0)부터 시작하여 column에 값을 채우고 난 이후 row-1 범위로 값을 채워야하고 다시 col.. 2021. 5. 3.
[ 파이썬(python) ] 코드업 1476 ~ 1483 - 2차원 배열 빗금 채우기 3-1 ~ 3-8 📍 1476 : [ 기초 - 배열 연습 ] 2차원 배열 빗금 채우기 3-1 빗금을 채우는경우는 2중 반복문이 아닌 3중 반복문으로 처리해야 하는데, 처음에 규칙을 찾으려 해도 도통 찾아지질 않았다. 그래서 관련영상(유튜브 - 황진경 코딩영재컴퓨터학원)에서 푸는 방법을 배웠다. 문제에 나와있는 arr[i][j]값의 좌표를 찍어보면 다음 사진과 같다. 이전에 풀었던 2차원 배열 순서대로 채우기는 2중 반복문을 이용해 i, j값이 증가할 때 순서대로 값을 출력했으나, 이번 문제는 조건을 만들어야 한다. i+j = sum인 조건이 같을 때만 좌표를 입력하기때문에 i, j가 나올 수 있는 모든 경우의 수에 조건을 대입해야 한다. 따라서, 3중 반복문을 사용해 K(sum)값과 일치하는지 여부를 파악해야 한다. 이때.. 2021. 4. 30.
[ 파이썬(python) ] 코드업 1468 ~ 1475 - 2차원 배열 지그재그 채우기 2-1 ~ 2-8 💡 1460 ~ 1467은 이전 게시물을 참고해주세요! 📍 1468 : [ 기초 - 배열 연습 ] 2차원 배열 지그재그 채우기 2-1 지그재그로는 어떻게 채워야할까?를 고민하다가 i가 홀수이거나 짝수일 때로 나눠서 작성했다. 하지만, 그것보다 flag를 사용하면 더 편하게 채울 수 있다. flag는 전구를 on/off 스위치로 끄고 켤 수 있듯이 flag를 사용해서 방향이 바뀌면 False로 설정하고 반대일 경우에는 True로 설정해 원하는 방향으로 유도 할 수 있다. 평소에 flag를 잘 사용하지 않아서 몰랐는데 괜찮은 방법인 것 같다. 전체적인 흐름이 두 가지로 나눠졌을 때 사용해봐야겠다. 현재 코드에서는 flag = True일때는 순방향으로 flag = False일때는 역방향으로 설정했다. 나머지 .. 2021. 4. 29.
[ 파이썬(python) ] 코드업 1460 ~ 1467 - 2차원 배열 순서대로 채우기 1-1 ~ 1-8 📍 코드업 1460 ~ 1467 2차원 배열 순서대로 채우기 1-1 ~ 1-8 코드업 [ 기초 - 배열연습 ] ⚡️ 서론 2차원 배열의 기초적인 개념을 다진 문제다. 저번 주 DFS, BFS 관련 문제 풀 때 2차원 배열을 많이 사용했는데, 그때마다 가로 x 세로 혹은 세로 x 가로로 입력이 주어지면 내가 지금 올바른 방식으로 접근하는지 긴가민가했었는데, 이번 기회에 개념을 다시 잡을 수 있어 좋았다. 코드 업에 2차원 배열이라고 검색했을 때 나오는 문제들은 전부 풀어봐야겠다. ⚡️ 본론 📍 1460 : [ 기초 - 배열 연습 ] 2차원 배열 순서대로 채우기 1-1 n*n크기의 2차원배열을 채우는 문제다. n = int(input()) cnt = 1 for i in range(n): for j in ra.. 2021. 4. 29.
[ 파이썬(python) ] 코드업 4503 - 바이러스(BFS) 📌 코드업 4503 - 바이러스(BFS) 문제 설명 💡 나의 풀이 어제 풀었던 문제를 BFS로 풀어봤다. DFS는 한 노드에서 인접 노드가 더 없을 때까지 끝까지 파고 들어가는데, BFS는 한 노드에서 인접노드가 없으면 주변 인접 노드를 찾는다. BFS는 Queue를 이용해서 풀면 되는데, 어제처럼 flag, check형식으로 풀어보자. BFS방식의 전체적인 흐름은 다음과 같다.(Queue는 선입선출임을 기억하자.) 시작하는 값을 Queue에 넣고 방문처리를 한다. Queue안에 현재 들어있는 값(노드)을 뺀다. 해당 노드의 인접한 노드 중에서 아직 방문하지 않은 노드를 모두 큐에 넣는다. 2~3번의 과정을 더 이상 할 수 없을 때까지 반복한다. Flag, Check방식은 다음과 같다. Flag C와 동.. 2021. 4. 15.