본문 바로가기

Programmers/프로그래머스

(60)
[Programmers] 불량 사용자 #include #include #include #include #include using namespace std; set s; bool chk[9]; int answer = 0; bool check(string id, int idx, vector &ban) { if (id.size() != ban[idx].size()) return false; for (int i = 0; i < id.size(); i++) { if (ban[idx][i] == '*' ) continue; if (id[i] != ban[idx][i]) return false; } return true; } void dfs(int idx, int cnt, vector&user, vector&ban, vector &res) { if (c..
[Programmers] 크레인 인형뽑기 게임 #include #include #include #include using namespace std; int solution(vector board, vector moves) { int answer = 0; //시뮬레이션 //같은 숫자가 2개 쌓이면 없어짐 stack st; int size = board[0].size(); //인형이 없더라도 0으로 차있기 때문에 사이즈는 같음 //중간에 0인 부분은 밑으로 끌어내려야 한다. // for (int i = 0; i 0 && !board[i][idx] && board[i][id..
[Programmers] 여행경로 문제 설명 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 ICN공항에서 출발합니다. 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어진 공항 수는 3개 이상 10,000개 이하입니다. tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다. 주어진 항공권은 모두 사용해야 합니다. 만일 가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 합니다. 모든 도시를 방문할 수 없는 경우는 주어지지 않습니다. 풀이 1) 1번 TC만 시간이 328.93ms 으로 다른..
[Programmers] 정수 삼각형 문제 설명 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 제한사항 삼각형의 높이는 1 이상 500 이하입니다. 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다. 풀이 1) 2차원 배열 dp[501][501]에는 내가 있는 높이에서 가장 최대값을 담는다. 2) 정답은 가장 바닥에 있는 숫자 중 가장 큰 값이다. (위에서 거..
[Programmers] 스킬트리 *스킬에 있는 문자의 순서를 인덱스화했다. indegree[26]은 스킬의 문자의 위치를 저장한다. 스킬이 "CBD"라면 0 2 1 3 0 0 0 0 0 0 이렇게 저장이 되어있다. *스킬트리에 있는 문자 중 스킬에 속한 문자들은 각 indegree[] 에 저장된 숫자로 치환한다. *숫자가 1씩만 증가하는 순서로 되어있어야 하기 때문에 idx 변수에 값을 저장해서 1씩 증가하는지 확인한다. #include #include #include #include #define INF 987654321 using namespace std; int indegree[26] = {0}; int solution(string skill, vector tree) { int answer = 0; for (int i = 0; i..
[프로그래머스] 가장 먼 노드 [문제] 문제 설명 n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 제한사항 노드의 개수 n은 2 이상 20,000 이하입니다. 간선은 양방향이며 총 1개 이상 50,000개 이하의 간선이 있습니다. vertex 배열 각 행 [a, b]는 a번 노드와 b번 노드 사이에 간선이 있다는 의미입니다. 예제의 그래프를..
[프로그래머스] 캠핑 [문제] 캠핑 무지를 돌보느라 지친 콘은 한적한 시골의 한 캠핑장에 놀러 갔다. 캠핑장은 텐트를 칠 수 있는 넓은 평지를 제공하고 있는데, 이 평지에는 이미 캠핑장에서 설치해 놓은 n개의 쐐기가 박혀 있다. 캠핑장 이용 고객은 이 쐐기들 중 한 쌍을 골라 다음과 같은 조건을 만족하도록 텐트를 설치해야 한다. 텐트는 직사각형 형태여야 한다. 텐트의 네 면이 정확하게 동, 서, 남, 북을 향해야 한다. 대각에 위치하는 텐트의 두 꼭짓점이 정확하게 선택한 두 개의 쐐기에 위치해야 한다. 텐트가 점유하는 직사각형 영역의 넓이는 0보다는 커야 한다. 텐트가 점유하는 직사각형 영역 내부에 다른 쐐기를 포함하면 안 된다. (다른 쐐기가 경계에 위치하는 경우는 허용함) 캠핑장에서는 위와 같은 조건을 만족하는 위치라면 ..
[프로그래머스] N진수 게임 [문제] N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0부터 시작해서 차례대로 말한다. 첫 번째 사람은 0, 두 번째 사람은 1, … 열 번째 사람은 9를 말한다. 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉 열한 번째 사람은 10의 첫 자리인 1, 열두 번째 사람은 둘째 자리인 0을 말한다. 이렇게 게임을 진행할 경우, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, … 순으로 숫자를 말하면 된다. 한편 코딩 동아리 일원들은 컴퓨터를 다루는 사람답게 이진수로 이 게임을 진행하기도 하는데, 이 경우..