목록알고리즘 (42)
DecordRay
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 : 첫번째 방법에서 시간 효율이 떨어지는 것 같아 더 좋은 방법을 모색해보았음 첫번째 방법 1. 문자열 개수가 홀수일 경우와 짝수일 경우로 나누었음(문자열 개수가 홀수일 경우 무조건 올바른 문자열이 아니므로) 2. 반복문을 통해 문자열의 개수만큼 회전을 시키고 각 케이스마다 올바른 문자열인지 판별 3. while문 안의 반복문을 통해 인덱스를 1번부터 시작하여 올바른 문자열인지 판별..
문제 : https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 : 1. 트리상에 연결되어 있는 정점들을 입력받을 graph 리스트 생성 2. 각 노드들의 부모노드를 저장할 parent 리스트 생성 3. 간선의 방향이 정해져 있지 않기 때문에 graph[a].append(b) graph[b].append(a) 와 같이 입력받은 노드들을 저장해줌 4. bfs알고리즘을 통해 정점마다 들어있는 노드들을 순회하면서 parent값이 0이면(아직 parent값이 안들어간 것이므로) parent값(v)을 넣어줌 5. pa..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사실 수포자 + 행렬을 고등학교때 배우지 않았었기 때문에(교과과정때문에..) 행렬이 굉장히 낯설었다. 검색을 통해 행렬의 곱 방법을 알아본 후에 문제를 다시 풀었다. 풀이 : 1. 입출력 예시 2의 경우 arr1 [[2, 3, 2], [4, 2, 4], [3, 1, 4]] arr2 [[5, 4, 3], [2, 4, 1], [3, 1, 1]] return 값 [[22, 22, 11], [3..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 : 1. cache_arr이라는 캐시 리스트를 만든 후 그 안에 cacheSize만큼 cities[i]를 넣어준 후 cacheSize의 개수 = len(cache_arr)의 개수 일 경우 LRU를 실행하는 알고리즘을 생각하였음. * Tip - cities[i]가 cache_arr에 있는 경우 기존 cache_arr에 있는 cities[i]를 삭제 후 새로 cache_arr에 citi..
문제 : https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 풀이 : 1. 1부터 100이하의 높이마다 각 안전 영역의 개수를 세주어야 하므로 find_safety함수를 만들기로 함 find_safety(h) 함수는 안전 지역 -> 1 물에 잠기는 지역 -> 0 으로 그래프를 변경해주는 함수 2. 이후 높이를 1씩 증가시켜가면서 bfs 진행을 통해 높이에 따른 안전영역의 개수를 파악 + 추가적으로 백준 14502 연구소 문제도 이와 비슷하니 한번 풀어보는..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 : 1. 배열 오름차순 정렬 2. 논문별 인용 횟수는 0회 이상 10000회 이하이므로 10000번 반목문을 돌려서(첫번째 반복문) H-Index의 최댓값을 탐색 3. 인용된 논문이 i 편 이상일 경우 H-Index값 최신화(두번째 반복문) 코드 : def solution(citations): answer = 0 citations.sort() for i in range(10001):..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 : 1. 어떻게 풀어야 할지 곰곰히 생각해보다가 그래프 x , 그리디 x , DP 인가?? 라고 생각해서 점화식을 구해봄 2. n이 1부터 6까지 일때 각 방법의 개수를 구해보니 i > 2일때, dp[n] = dp[n-2] + dp[n-1]이라는 점화식을 구할 수 있었음 코드 : def solution(n): dp = [0] * 2001 dp[1] = 1 dp[2] = 2 dp[3]..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 : 1. N의 제한사항이 2의 20승 이하인 자연수였기 때문에 일반적인 배열을 사용할 경우 시간초과가 날 것 같다고 생각 2. deque를 사용하여 참가자를 2명씩 비교하는 함수(win)를 만들기로 함 3. 4가지의 조건문을 만들어서 해결 첫번째 조건문 : 만약 두 참가자 모두 chk_list에 있는 참가자라면 정답이므로 chk = True를 통해 반복문 탈출 두번째 조건문 : 비교..