Algorithm(10)
-
카카오프렌즈 컬러링북 (프로그래머스) - C++
코딩테스트 연습 - 카카오프렌즈 컬러링북 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 문제 그림에 몇 개의 영역이 있는지와 가장 큰 영역의 넓이는 얼마인지 계산하는 프로그램을 작성해보자. 설명 입력은 그림의 크기를 나타내는 m과 n, 그리고 그림을 나타내는 m × n 크기의 2차원 배열 picture로 주어진다. 제한조건은 아래와 같다. 1
2021.03.02 -
프렌즈4블록 (프로그래머스) - C++
코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 프렌즈4블록. 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 문제 입력으로 블록의 첫 배치가 주어졌을 때, 지워지는 블록은 모두 몇 개인지 판단하는 프로그램을 제작하라. 설명 풀이 위에서부터 체크하면서 오른쪽, 아래, 대각선을 체크하여 2*2 의 값이 모두 같다면 set에 해당 인덱스를 추가한다. set를 사용하는 이유는 중복이 있을 수 있기 때문이다. 다 체크를 한 뒤에 지워지는 블록들을 '#'으로 변경해준다. 바닥 바로 위 칸부터 올라오면서 아래 빈 공간(#)이 있는지 확인한다. 있다면 계속 아래로..
2021.02.22 -
숫자의 표현 (프로그래머스) - C++
문제 자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요. 설명 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다. 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 풀이 start부터 시작해서 start로 부터 연속된 자연수를 더하다가 n과 값이 같으면 종료한 후에 start를 1 올린 후 다시 반복 위 과정을 반복 12345678910111213141516171819202122232425262728#include #include using namespace std; int solution(int n) { int answer = 0; int start = 1; for(..
2021.02.22 -
땅따먹기 (프로그래머스) - C++
문제 마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 return하는 solution 함수를 완성해 주세요. 설명 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다. 풀이 DP로 해결했다. dp[i][0] += max(dp[i-1][3], max(dp[i-1][1], dp[i-1][2]) ) i 행에 n열의 값은 i-1 행에서 n이 아닌 열 중의 최댓값 + 자신의 값 마지막 행 중의 최댓값이 답이 된다. 12345678910111213141516..
2021.02.22 -
가장 큰 정사각형 찾기 (프로그래머스) - C++
문제 표에서 1로 이루어진 가장 큰 정사각형을 찾아 넓이를 return 하는 solution 함수를 완성해 주세요. (단, 정사각형이란 축에 평행한 정사각형을 말합니다.) 설명 1와 0로 채워진 표(board)가 있습니다. 표 1칸은 1 x 1 의 정사각형으로 이루어져 있습니다. 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 풀이 표에서 1로 이루어진 가장 큰 정사각형을 찾아야한다. 왼쪽 위에서부터 채워나가면서 가장 큰 정사각형을 찾는다. 격자로 이루어진 맵에서 출발지에서 목적지까지 최단거리를 구하는 문제와 유사하다. 하지만 이 문제는 왼쪽 위 대각선까지 포함하여, 왼쪽, 위, 대각선 3가지 방향을 고려해야한다. --> [i-1][j] , [i][j-1] ,[i-1][j-1] 만약 해당 인덱스..
2021.02.20 -
최댓값과 최솟값 (프로그래머스) - C++
문제 str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요. 설명 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. 풀이 간단한 형변환 문제이다. string을 기준이 되는(공백) char로 나눈 후, sstream과 getline을 사용 string을 integer로 변환하여 배열에 저장한다. stoi 를 사용 배열에서 최댓값과 최솟값을 찾아 answer에 입력해준다. *min(max)_element 사용 12345678910111213141516171819202122232425262728293031323334353637383940414243#include #include #include #include #inc..
2021.02.20