출처https://www.acmicpc.net/problem/14502 문제격자모양의 구조로 되어있는 연구소에 바이러스가 유출되었다. 바이러스는 상하좌우 빈칸이 있는곳으로 퍼질 수 있으며, 벽이 있으면 진행이 불가능하다. 벽을 새로 3개만 세워 바이러스 유출을 최대한 막아 안전지대를 확보한다고 하였을 때, 가장 넓은 안전지대의 면적을 구하는 문제이다. 풀이정석적인 DFS + BFS 문제이다. 먼저, 벽을 3개를 막아야 하는데 어느 벽을 막아야 안전지대가 가장 넓은지 직접 세워보기 전까지는 알 수 없기때문에, 모든 경우를 살펴보아야 한다. 또한 3개를 막기 위한 벽 위치의 조합을 구하기 위해서는, DFS를 이용해야 한다. DFS를 이용하여 세개의 벽을 막아놓았다면, 이후 막혀있는 연구실에서 BFS를 이용하..
분류 전체보기
출처https://school.programmers.co.kr/learn/courses/30/lessons/60063 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 길이가 2인 로봇은 왼쪽과 오른쪽 둘중 한 축을 기준으로 위 회전이 가능하다. 이 로봇을 적당히 회전시키거나 상하좌우로 이동시켜 목적지까지 이동하는데 걸린 최단 시간을 구하는 문제이다. 풀이이 문제는 어떠한 공식을 적용해서 직접 움직여 보지 않고 해결하기엔 어려운 문제라고 판단하였다. 따라서, 직접 조건에 따라 움직이며 해답을 구하는 시뮬레이션 문제이며, 최단 시간을 구해야하는 조건이 붙었기..
출처https://www.acmicpc.net/problem/13459 구슬 탈출 문제 가장 바깥 행과 열이 모두 막혀있고, 밖으로 나갈 수 있는 구멍이 하나 뚫린 상자를 이리저리 기울여서 그 안에 있는 빨간공을 구멍을 통해 꺼낼 수 있는지 판별하는 문제이다. 단, 파란공은 어떠한 경우에도 빠지게 되면 실패로 간주한다. 먼저, 문제의 조건을 추려보면 아래와 같다 #으로 된 것은 벽 또는 장애물이며, 이 곳으로 공은 갈 수 없다.R로 표시된 빨간 공과 B로 표시된 파란공은 각 한칸을 차지하고 있다고 가정한다. 이때 빨간공과 파란공은 같은 위치에 있을 수 없다.빨간공과 파란공은 보드를 기울였을때 동시에 움직인다.빨간 구슬은 10회 이하로만 움직여야 한다.이 문제에서 기울인다 함은, 공이 기울인 방향으로 장애..
출처https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 문제 자체는 이해하기에 어렵지 않다. 데이터 베이스에서 후보키란, 유일성과 최소성을 만족하는 속성이다. 학생들의 인적사항이 주어졌을때, 후보키의 최대 수를 구하면 되는 문제이다. 즉, 유일하기 때문에 식별이 가능해야하고, 불필요한 속성을 포함하지 않고 최소한의 속성만 포함하도록 해야한다. 풀이후보키를 찾기 위해서 특별한 알고리즘이 존재하지 않는다. 결국 모든 속성의 쌍을 보고, 이것이 유일성..
출처https://school.programmers.co.kr/learn/courses/30/lessons/84021 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 game_board의 빈공간에, table에 주어진 도형을 끼워 맞추는 문제이다. 도형은 회전시킬 수 있지만, 뒤집을 수는 없다.이때, 최대 몇칸을 채워넣을 수 있는지 구하는 문제이다. 풀이BFS를 이용하여 풀 수 있는 문제이다. 상당히 코드도 길고 어려울 수 있지만, 다음과 같은 과정을 따라가면 된다. 먼저, BFS 알고리즘을 이용하여 board의 빈 공간과 table에 주어진 모양을 추출한..
출처https://school.programmers.co.kr/learn/courses/30/lessons/42627 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 하드 디스크가 요청을 한번에 하나만 수행할 수 있다고 가정하였을 때, 요청 받은 작업이 완료되는 시간의 평균이 가장 적도록 작업 순서를 정하도록 하는 문제이다. 요청 받은 작업이 완료되는 시간이란, 작업 요청부터 시작되기까지 기다린 시간 + 실제 작업 시간 을 말하며 이는 곧 작업이 끝나는 시간 - 작업 요청 시간이다.풀이이 문제를 해결하기 위해서는 두개의 우선순위가 필요하다. 바로 작업 요..
출처https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 설명이 길다. 하지만 읽다보면 간단하다.만약 aaaabbbb를 1개 단위로 잘라(a, b) 압축하면, a와 b는 각각 네개이기 때문에 4a4b 이렇게 압축되고 , 2개 단위로 잘라서 (aa,bb) 압축하면 2aa2bb 이 되는데, 이렇게 압축하여 표현한 문자열 중 가장 짧은 것의 길이를 구하는 문제이다. 풀이이 문제는 결국, 1개로 잘라 압축할지 부터 문자열의 길이만큼 잘라 압축할지 (이 경..
출처https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 노래의 장르와 재생횟수가 주어진다. 총 재생횟수가 많은 장르부터 출력을 하는데, 한 장르당 가장 많이 재생된 곡 2개를 출력한다. 만약 2개가 아니라면 1개만 출력한다. 만약 곡의 재생횟수가 같으면 고유번호 i가 작은 순서로 출력한다. 풀이이 문제는 복잡하게 생각하지 않고, 내가 만약 코딩이 아니라 손으로 직접 이 과정을 수행한다면 어떤 과정을 통해 수행할까? 라는 생각 아래, 다음과 같은 ..