목록알고리즘/프로그래머스 (62)
어흥
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/1829 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 1. 주의할 점 - 같은 색일때에만 큐에 넣는다 2. 구현 - Check[][] 배열을 초기화한다 - Pictures[][] 배열에 대해 0이 아니고 확인하지 않은 곳이라면 BFS를 수행한다 - 4가지 방향 탐색을 하며 같은 색이고 방문하지 않았다면 Queue에 추가한다 #include #include #include using namespace std..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 1. 주의할 점 - 그리드 알고리즘으로, 상황에 맞게 잘 설계한다 2. 구현 - 처음엔 DFS를 통해 해결했지만, 굳이 DFS를 사용하지 않아도 될것 같다 - Arr[] 배열을 통해 현재 보유한 체육복 수 -1만큼 저장한다 - For문을 통해 만약 현재 체육복 미소지자면 양옆 사람을 확인하여 대여가 가능하다면 대여를 한다. - 이후, 현재 체육복을 1..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 1. 주의할 점 - 2중 For문은 최대한 사용하지 않도록 한다 2. 구현 - Brown = 2*(Row-1)+2*(Col-1) 을 통해 rowPlusCol 값을 구한다 - For문을 통해 Row와 Col값을 구하여 Answer에 추가한다 #include #include using namespace std; vector solution(int b..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/86052 코딩테스트 연습 - 빛의 경로 사이클 각 칸마다 S, L, 또는 R가 써져 있는 격자가 있습니다. 당신은 이 격자에서 빛을 쏘고자 합니다. 이 격자의 각 칸에는 다음과 같은 특이한 성질이 있습니다. 빛이 "S"가 써진 칸에 도달한 경우, 직진 programmers.co.kr 1. 주의할 점 - 사이클 여부를 판단해야 한다 - 4방향 탐색을 거친다 2. 구현 - Check[y][x][dir] 배열을 통해 각 (y,x)에 dir방향에서 들어온 적이 있는지 확인한다 - Check[][][] 값이 false면 Dfs()를 통해 해당 지점과 방향에서 시작하여 만드는 사이클을 구한다 - Dfs() 내부..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/87946 코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 1. 주의할 점 - 최소 피로도 ≥ 소모 피로도 2. 구현 - 최소 피로도를 needEnergy[] 배열에 담는다 - 소모 피로도를 useEnergy[] 배열에 담는다 - check[] 배열을 통해 던전 탐험 유무를 체크한다 - DFS()를 수행하며 남은 피로도가 최소 피로도 이상이며, 탐험하지 않은 던전인 경우, 탐험을 한다 #include..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/87694 코딩테스트 연습 - 11주차 [[1,1,7,4],[3,2,5,5],[4,3,6,9],[2,6,8,8]] 1 3 7 8 17 [[1,1,8,4],[2,2,4,9],[3,6,9,8],[6,3,7,7]] 9 7 6 1 11 [[2,2,5,5],[1,3,6,4],[3,1,4,6]] 1 4 6 3 10 programmers.co.kr 1. 주의할 점 - 직사각형을 어떤 방식으로 표현할 것인가? - 좌표를 어떻게 나타낼 것인가? - 경계를 어떻게 찾을것인가? 2. 구현 - 직사각형을 Arr[][] 배열에 담으며, 경계뿐만 아니라 내부도 1로 채워넣는다. 이때, 좌표를 표현해야하기 때문에 가로 세로를 2..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/87377#qna 코딩테스트 연습 - 10주차 [[2, -1, 4], [-2, -1, 4], [0, -1, 1], [5, -8, -12], [5, 8, 12]] ["....*....", ".........", ".........", "*.......*", ".........", ".........", ".........", ".........", "*.......*"] [[0, 1, -1], [1, 0, -1], [1, 0, 1]] ["*.*"] [[1, -1, 0], [2, -1, 0], [4, - programmers.co.kr 1. 주의할 점 - 벡터에 값 채우기 - 범위 설정 2. 구현 - 역행..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/86971 코딩테스트 연습 - 9주차 9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1 programmers.co.kr 1. 주의할 점 - N이 100개 이하다 - Tree다 → 임의의 서로 다른 두 Node A,B로 가기 위한 방법은 유일하다 2. 구현 - 입력받을 때, Conn[][] 배열을 통해 두 Node의 간선 여부를 파악하고 V[] 벡터를 통해 각 Node와 연결된 다른 Node를 저장한다 - N이 작기 때문에 연결되어 있는 서로 다른 두 Node A,B의 간선을 자르고 ..