코딩 테스트/프로그래머스
-
연속 펄스 부분 수열의 합코딩 테스트/프로그래머스 2023. 10. 6. 17:03
문제 https://school.programmers.co.kr/learn/courses/30/lessons/161988 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 펄스 수열은 [1,-1,1,-1] 또는 [-1,1,-1,1] 임. 특정 배열에 위의 펄스 수열 2가지를 각각의 원소에 곱해주면 둘은 부호만 반대 될 뿐 절대값은 같음 따라서 원래의 배열에 [1,-1,1,-1] 과 [-1,1,-1,1] 을 각각 곱한 뒤 두가지 배열을 추출하는 것이 아닌 [1,-1,1,-1]을 곱한 뒤 그것의 최댓값과 최솟값을 구한다. 최댓값과 최솟값은 [-1,1,-1..
-
[최단거리] 순위코딩 테스트/프로그래머스 2023. 10. 5. 19:45
문제 https://school.programmers.co.kr/learn/courses/30/lessons/49191 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 특정 선수가 어떤 선수를 이겼는지 알기 위해선 그 선수와 관련 된 모든 경우를 찾아봐야함. 플루이드 워셜 알고리즘은 최단거리를 구하는 알고리즘이지만 어떤 노드(모든)에서부터 다른 모든 노드까지의 경우의 수를 다 구할 수 있음. 이 점을 활용해서 문제를 풀어본다. 예를 들어 1>2>3>4 일 때, 1번이 4번을 확실히 알기 위해선 (1,3) (3,4)를 통해 알 수 있음. 이것을 코드화..
-
[DFS/BFS] 아이템 줍기 (파이썬) - 진행 중코딩 테스트/프로그래머스 2023. 6. 13. 15:15
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/87694 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 gr에는 직사각형들의 변에 해당하는 좌표들에 넘버를 달아줌. (0번째 rec면 그 변 좌표들에 gr[x][y].append(0) ) inner 라는 그래프를 따로 만들어서 해당 직사각형안에 있는 모든 좌표들에 True값을 부여해줌 현재 위치 x,y 의 직사각형 넘버를 따온다. 다음으로 이동 할 수 있는 nx,ny 의 gr값(직사각형 넘버)이 이전 x,y에서의 넘버와 같고 gr..
-
[카카오] 블록 이동하기 ( 파이썬 )코딩 테스트/프로그래머스 2023. 6. 10. 19:58
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/60063 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 visited는 딕셔너리로 선언해서 키 값에 sx,sy,ex,ey 방문한 것들을 넣어주고 최소로 도착하는 시간을 기록해둠 동,서,남,북으로 이동했을 시에는 sx,sy,ex,ey의 순서는 그대로 유지된다. 90도로 꺽을 시에 생기는 유의 사항들 도형이 누워있거나 세워져 있거나에 따라 변하는 점이 달라짐. 90도로 꺽을 때 위에 있는, 왼쪽에 있는 점이 sx,sy가 되므로 좌표 ..
-
[연습 문제] 숫자 타자 대회 ( 파이썬 )코딩 테스트/프로그래머스 2023. 6. 6. 16:56
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/136797 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 번호에서 다른 번호로 이동할 때 드는 가중치들 미리 계산 (dist_num 함수) 각 단계별(numbers 각 자리수) 탐색 시 생성 될 수 있는 가중치들을 계산 왼손을 움직일 경우 가중치는 d[left][num] , 큐에 담을 수는 num,right 오른손을 움직일 경우 가중치는 d[right][num] , 큐에 담을 수는 left,num 따로 조건을 달지 않을 경우 생성..
-
[탐색] 퍼즐 조각 채우기 (파이썬)코딩 테스트/프로그래머스 2023. 6. 2. 17:54
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/84021 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 문제를 읽어보면 table에 있는 퍼즐 조각을 하나하나 옮겨보고 gb( game_board) 빈 공간에 딱 들어 맞는지 알아보는 문제 같다. 나 같은 경우는 gb에서 0으로 쭉 이어진 조각들을 구한 뒤 table을 탐색하면서 해당 조각이 table과 딱 들어맞는지 계산 함.(회전 포함) gb에서 0으로 쭉 이어진 각 조각들을 구해서 peace 라는 리스트에 담아줌( 이 때 각..
-
[탐색] 미로 탈출 명령어 ( 파이썬 )코딩 테스트/프로그래머스 2023. 5. 14. 16:58
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 방문했던 곳을 다시 가는 것이 허용되는 문제이므로 방문을 최소화하면서 최적의 길을 찾아야 함 방향 ( down,up, left,right ) 에 대해 알파벳 순서는 d, l, r, u이다. 방문을 최소화 하기 위해 최소 힙을 사용함. 알파벳 순서는 dlru 이므로 이것을 반대로 뒤집은 u, r, l d 로 탐색을 진행하면서 각 dist에 (-1 * dir) 을 더할 것 아래..
-
[이분 검색] 외벽 점검 (파이썬, 카카오)코딩 테스트/프로그래머스 2023. 5. 12. 19:33
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/60062 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 원형 레스토랑을 일직선으로 생각해서 기존 weak을 두배로 늘려줌 eg) weak = (1,3,5,7) 이라면 각 원소에 n(12이라고 가정)을 더해줌 weak = [1,3,5,7,13,15,17,19] 처음에는 가장 긴 dist 원소부터 출발 지점에만 넣고 이후 짧은 dist들을 차례로 넣으면 되는 줄 알았는데 그럴 경우 예외가 생김 ( eg. 짧은 간격에 있는 weak을 ..