코딩 스터디

momo study(23.01.19)

hunm719 2023. 1. 19. 21:47

오늘은 알고리즘 관련 학습 콘텐츠를 복습하고,

코드스테이츠에 있는 코플릿 자료구조 문제 10,11번을 복습하고 12번에 대한 풀이 영상을 보았다

 

 

10번 문제는 방향이 있는 간선과 방향이 없는 간선들의 목록을 받아 2차원 배열의 인접행렬을 반환하는 함수를 작성하는 문제였다. int[][] 배열을 입력받는데 (내부는 {{0, 3, 0}, {0, 2, 0} ...} 이런 상태의 2차원 배열) 각 간선은 0번째는 간선의 시작 정점, 1번째는 간선의 도착 정점, 2번째는 방향성(1==무향, 0==단방향) 이라는 정보를 담고있다. 이를 다시금 2차원 인접행렬로 반환하는데 행은 바깥, 열은 안쪽 배열이고, 세로축은 시작 정점, 가로축은 도착 정점이며, 두 정점간의 간선 유무는 0(두 정점 간에 간선 존재x)과 1(두 정점 간에 간선 존재o)로 표시하는 문제였다.

 

수도코드를 작성할 때, 입력받는 배열에서 가장 큰 수를 찾고, 그 수에 1을 더한 수를 가로와 세로축으로 하는 새로운 int[][]를 선언해야하는 것 까지는 성공적이었다. 하지만 이후 반복문을 순회하면서 새로운 int[][](int는 기초값이 0)에 간선이 있는 요소에 1을 입력해주는 코드를 짜는데 굉장히 오래걸렸다.

 

솔직히 비전공자에  코딩 배운지 이제 한 달에 이 문제 유형도 처음본 내가 이 정도 난이도의 문제를 풀었다는것 자체만으로도 나에게 박수를 보내고 싶지만 시간이 너무 많이 걸렸기 때문에(얼마나 걸렸는지 기억도 안 날 정도..) 앞으로 시간을 효율적으로 사용하기 위해 나만의 기준점을 정하려고 한다.

1.40분 정도 보고 수도코드가 생각이 안 나면 레퍼런스 보거나 포기

2.작성한 수도코드에 상세함이 부족해서 자꾸만 수도코드를 변경하게 되면 최대 2시간으로 잡고 넘으면 레퍼런스 보기

 

 

11번 문제는 1)Array타입을 요소로 갖는 인접행렬이 담긴 2차원 배열, 2)int타입의 시작 정점, 3)int타입의 도착 정점을 입력받아 시작 정점에서 도착 정점으로 이어지는 길이 있으면 true, 없으면 false를 리턴하는 문제였다. 

 

수도코드는 작성했지만 자꾸 변경하게 됐던 문제로, 내 수도코드에 부족했던 결정적인 부분은 입력된 출발지점에서 1차원 배열을 순회할 때, 1을 입력받으면(길이 있으면) 다시 돌아오지 못 하도록 해당 루트를 순회했다고 표시를 해줬어야 했는데 그 부분이 부족해 계속해서 무한루프를 돌았다.

 

 

12번 문제는 방향이 없는 간선들의 목록이 주어질 때, 연결된 정점의 컴포넌트(그룹들)가 몇 개인지 반환하는 함수를 작성하는 문제였다.

 

솔직히 수도코드도 작성하지 못했던 문제이고, 레퍼런스를 봐도 이해하기 힘들었던 문제인데 다행히 풀이 영상이 학습 콘텐츠에서 제공되어서 완벽히는 아니지만 대강의 흐름과 코드들이 어떤 의미인지는 이해할 수 있었다. 하지만 영상을 본 후에도 저걸 다시 풀어보라고 하면 또 수도코드에서 막힐 것 같아서 특히나 추가적인 공부가 필요하다고 생각한다.

'코딩 스터디' 카테고리의 다른 글

momo study(23.01.21)  (0) 2023.01.21
momo study(23.01.20)  (1) 2023.01.20
momo study(23.01.17)  (0) 2023.01.17
momo study(23.01.16)  (0) 2023.01.16
momo study(23.01.15)  (1) 2023.01.15