반응형

알고리즘 문제/프로그래머스 152

보행자 천국 [Lv. 3]

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krM * N 크기의 격자 모양 배열이 있을 때, 좌표 (0,0)에서 좌표(m-1,n-1) 까지 이동할 수 있는 경로의 수를 구하여라.1. 아래, 오른쪽으로만 이동할 수 있음2. 직진만 가능한 구간이 있음3. 진입이 불가능한 구간이 있음 풀이 방법모든 구간이 이동 가능하다고 할때의 풀이법부터 생각해보자.0,0 구간으로 이동 할 수있는 경우의 수는 무조건 1개이다. (0,1) , (1,0)은 (0,0)만을 통해 이동할 수 있으니 경우의 수가 1이다. (0,2)는 (0,1)을 통해서만 이동이 가능하니 1(2,0)은 (1,..

프로그래머스-길찾기 게임[Lv. 3] (C++)

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr이진트리 노드의 모든 좌표 정보를 입력받을때 전위순회, 후위순회한 순서를 구하시오.트리를 구성하는 모든 노드의 x, y 좌표 값은 정수이다.모든 노드는 서로 다른 x값을 가진다.같은 레벨(level)에 있는 노드는 같은 y 좌표를 가진다.자식 노드의 y 값은 항상 부모 노드보다 작다.임의의 노드 V의 왼쪽 서브 트리(left subtree)에 있는 모든 노드의 x값은 V의 x값보다 작다.임의의 노드 V의 오른쪽 서브 트리(right subtree)에 있는 모든 노드의 x값은 V의 x값보다 크다. 풀이 방법루트는 y..

자물쇠와 열쇠 [Lv. 3]

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krN * N 크기의 자물쇠와 M * M 크기의 열쇠가 있습니다. 열쇠가 자물쇠를 열 수 있는지 확인해주세요.이때 M은 항상 N이하이며 자물쇠 격자 밖으로 열쇠가 튀어나오더라도 자물쇠의 구멍만 채워지면 열 수 있습니다. 풀이방법N, M은 20 이하의 작은 수 입니다. 2차원 배열이기에 최대 사이즈는 400, 400 즉, 완전 탐색으로 풀라는 이야기로 해석할 수 있겠습니다. 그렇다면 모든 경우의 수를 하나하나 체크하는 방법으로 풀어야겠네요. 경우의 수는 아래와 같습니다.1. 열쇠는 회전하여 자물쇠에 넣는것이 가능합니다...

순위 [Lv. 3]

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krN명의 권투선수가 참여한 권투 대회, 심판은 경기 결과를 가지고 순위를 매기려하는데 몇몇 경기 결과를 분실하여 정확하게 순위를 매길 수 없는 상황입니다. 남아있는 결과를 통해 순위를 확실히 알 수 있는 사람이 몇명인지 찾아주세요.(A선수가 B선수를 이기고 B선수가 C선수를 이기면 A선수는 무조건 C선수를 이깁니다) 풀이방법플로이드-워샬 알고리즘을 사용하여 풀 수 있겠습니다. 순위라고 생각하지 않고 길찾기라고 생각하면 쉽습니다.A선수와 모든 선수와의 결과를 알 수 있다면 A선수는 순위를 명확히 확인할 수 있습니다. ..

가장 긴 팰린드롬 [Lv. 3]

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문자열 s가 있고 s를 반대로 뒤집을 것을 s'라고 할때 s 와 s'가 같으면 이 문자열은 팰린드롬이라고 합니다.문자열 s가 주어질 때 부분문자열중 가장 긴 팰린드롬의 길이를 구해주세요. 풀이방법이 문제의 제한사항을 보면 s의 길이가 2500이하의 정수라고 나와있습니다. 즉 N * N의 속도로 풀이가 가능하다는 이야기입니다.저는 속도의 제한이 없기 때문에 굉장히 직관적인 방법으로 풀어보았습니다. 풀이 방법은 아래와 같습니다.1. 문자열의 모든 문자들을 순회합니다.2. 현재 문자가 팰린드롬의 가장 가운대라고 가정하고..

입국심사 [Lv. 3]

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr입국 심사를 기다리는 n명의 사람이 있고, 여러 심사관이 있습니다. 각 심사관들의 심사 시간을 times 배열로 입력 받을 때 6명의 사람을 입국 심사하는데 걸리는 최소 시간을 구하시오. ex) 6명의 대기자가 있고 times = [7, 10] 일 때 최소시간 28분 소요됨가장 첫 두 사람은 바로 심사를 받으러 갑니다.7분이 되었을 때, 첫 번째 심사대가 비고 3번째 사람이 심사를 받습니다.10분이 되었을 때, 두 번째 심사대가 비고 4번째 사람이 심사를 받습니다.14분이 되었을 때, 첫 번째 심사대가 비고 5번째..

섬 연결하기 [Lv. 3]

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krN개의 섬이 있을 때, 섬을 이어주는 다리를 입력으로 받습니다 (섬 a, 섬 b, 비용) 다리를 이용하여 모든 섬을 연결하는 최소 비용을 구해주세요.  풀이방법크루스칼 알고리즘을 사용하면 됩니다.비용이 가장 적은 간선부터 [연결된 섬 리스트]에 추가해줍니다.이미 연결되어 있다면 건너뛰고, 연결되어 있지 않다면 추가합니다.비용이 가장 작은 간선부터 연결하였기에 최소 비용이 보장됩니다. 여기서 핵심 구현 부분은 아래와 같습니다.1. 연결되어 있는지 체크하기2. 연결하기 이는 Union - Find 알고리즘을 이용하면 ..

징검다리 건너기 [Lv. 3]

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr징검다리를 이루는 각 디딤돌에는 밟을 수 있는 횟수가 정해져 있습니다. 징검다리를 건널 때에는 밟을 수 있는 디딤돌을 모두 밟고 건너야하며, 한번에 건너뛸 수 있는 디딤돌의 갯수는 k개 입니다. ( 바로 앞에 밟을 수 있는 횟수가 0인 디딤돌이 있을 때 건너 뛸 수 있음 ) 디딤돌을 밟을 수 있는 횟수들을 배열과 k를 입력받을 때 건널 수 있는 사람의 수를 구하시오. 풀이 방법당연하게도 하나하나 시물레이션을 돌리면 시간 초과가 발생합니다. 그렇기 때문에 어떠한 조건에서 시뮬레이션이 종료되는 지를 생각해보고 그 조건..

기지국 설치 [Lv. 3]

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr N개의 아파트와 stations 만큼의 4G 기지국이 있을 때 4G 기지국을 5G로 바꾸려고 합니다.5G는 4G보다 범위가 적기 때문에 기지국을 추가로 설치해야합니다.모든 아파트에서 인터넷을 쓰려면 최소 몇개의 기지국을 추가로 설치해야하는지 찾아주세요 풀이 방법인터넷이 닿지 않는 공간을 계산하면 간단합니다.// 1 ~ 11[] [] [] [O] [] [] [] [] [] [] [O]위와 같이 4번, 11번에 기지국이 설치되어 있고 인터넷 범위가 1이라면인터넷이 닿지 않는 공간은 아래의 빈칸 입니다. ( O는 인터..

숫자 게임[Lv. 3]

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krN명씩 두 개의 팀이 있습니다. 각 팀원들은 숫자카드를 하나씩 가지고 있고 각 팀별로 한명 씩 나와서 게임을 시작합니다.나의 숫자가 더 크면 승리, 같으면 무승부, 작으면 패배입니다.팀 A의 숫자와 순서를 알고있을 때 팀 B가 가질 수 있는 최대 승리횟수를 찾아주세요 풀이 방법1. 두 팀의 숫자를 내림차순 정렬을 해줍니다. 2. 두 팀의 가장 큰 수를 각각 뽑아서 비교합니다. 3. A 카드 보다 B 카드가 더 크다면 answer에 +1을 해주고 A카드와 B카드 모두 삭제해줍니다. 4. A 카드가 B 카드보다 더 크..

반응형