전체 글

기타/자료구조, 알고리즘

[Python] DFS(깊이우선탐색)과 BFS(너비우선탐색)

1. DFS란 그래프에서 깊은 부분을 우선으로 탐색하는 알고리즘이며 재귀함수로 구현할 수 있다. 1번에서 탐색을 시작하면 아래와 같이 동작하면서 노드를 방문한다. 방문한 노드를 순서로 출력하면 "1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 10 → 11 → 12" 로 출력될 것이다. 1 → 2 → 3 → 4 → 2 → 3 → 5 → 2 → 6 → 7 → 8 → 9 → 10 → 8 → 9 → 11 → 8 → 12 2. DFS 구현해보기 # 실행결과 = 1→2→3→4→5→6→7→8→9→10→11→12→ visited = [False] * 12 def dfs(graph, v): if visited[v]: return # 방문노드 출력 visited[v] = True print(v+1, en..

기타/코딩테스트

[Python] 프로그래머스 - 조이스틱(미해결)

1. 문제정보 https://school.programmers.co.kr/learn/courses/30/lessons/42860 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 해결과정 시작 인덱스(0)에서부터 'A'가 아닌 가장 가까운 인덱스를 찾아 해당 인덱스로 이동하고, 일치하는 알파벳으로 변환하기 위한 최소 이동(커서를 아래로 움직일지, 위로 움직일지)횟수를 계산하는 문제다. 구현에 번거로움이 조금 있었지만 잘 구현했다고 생각했는데 채점 과정에 문제가 조금 있는 것 같다. (질문게시판에도 이게 왜 그리디인지 문의가 많았다..) 채점 과정에 문제..

기타/코딩테스트

[Python] 프로그래머스 - 체육복

1. 문제정보 https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 해결과정 우선 신경쓰였던 부분은 체육복을 도난 당한 학생이 앞에 친구에게 체육복을 빌릴 때와 뒤에 있는 친구에게 체육을 빌릴 때의 결과가 차이가 있을 수 있었다. 따라서 앞에 친구를 먼저 확인하고 뒤에 친구를 확인하는 순서와, 뒤에 친구를 확인하고 앞에 친구에게 확인하는 순서로 각각 값을 구한 후 더 작은 값을 결과로 내려고했다. 하지만 별도의 리스트를 비교하면서 구현하는데 어..

기타/코딩테스트

[Python] 프로그래머스 - 네트워크

1. 문제정보 https://school.programmers.co.kr/learn/courses/30/lessons/43162# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 풀이과정 레벨 3이라서 조금 긴장했는데 문제를 보았을 때 "그냥 DFS/BFS 돌리면 되는거아니야?" 하고 구현했고 테스트케이스를 실행했을 때 정상적으로 통과되었다. 하지만 제출 과정에서는 대부분 실패하게 됐는데 그 이유를 이해하는데 시간이 조금 소요되었다. 결론부터 말하자면 주어진 배열정보를 그대로 DFS/BFS를 실행하면 정답을 구할 수 없다. 아래와 같이 정보가 주어졌을..

lazy man
Lazy Man's Blog