본문 바로가기
728x90

개발90

[프로그래머스 C++ Lv2] 땅따먹기 안녕하십니까. Eun🦆입니다. 풀이법 입니다. 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr #include #include using namespace std; // 첫 행부터 다음 행의 최대값을 더해 구하려고 했으나 이는 틀리다. // 왜냐하면 다음 행의 중간값을 더하고 이 다음 행의 최대값을 더하는 경우 더 클 수 있기 때문이다. // 해결 방안은 다음 행의 값들에 이전 행의 최대값을 더하는 것이다.(같은 열 제외) // DFS의 경우 시간복잡도로 인해 불가능하다고 한다. int s.. 2022. 6. 6.
[프로그래머스 C++ Lv2] 다음 큰 숫자 안녕하십니까. Eun🦆입니다. 풀이법 입니다. 코딩테스트 연습 - 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니 programmers.co.kr #include #include using namespace std; int Count(int n) { int bin = 0; int cnt = 0; for(int i=1;n>0;i=i*10) { int one = n%2; if(one==1) cnt++; n=n/2; } //printf("cnt = %d\n",cnt); return cnt; } int solution(int n) { .. 2022. 6. 6.
[프로그래머스 C++ Lv2] 올바른 괄호 안녕하십니까. Eun🦆입니다. 풀이법 입니다. 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr #include #include #include // 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요. bool solution(const char* s) { bool answer = true; int len = 0; int open = 0; for(int i=0;i 2022. 6. 6.
[프로그래머스 C++ Lv2] 가장 큰 정사각형 찾기 안녕하십니까. Eun🦆입니다. 풀이법 입니다. 코딩테스트 연습 - 가장 큰 정사각형 찾기 [[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]] 9 programmers.co.kr #include #include using namespace std; ​ //정사각형을 어떻게 찾는지 간단하게 설명하자면 //배열의 [1][1]부터 반복문을 돌린다. (첫 번째 행, 첫 번째 열 무시, 이유는 2번 참고) //현재 값이 1일 경우, 좌측값, 상단값, 좌측상단값 중 가장 작은 값의 +1 한 값을 현재 값으로 할당. //배열이 끝날 때 까지 반복. //배열의 가장 큰 값이 현재 배열의 가장 큰 정사각형의 값이 된다. ​ int solution(vector board) { int answer = .. 2022. 6. 6.
[프로그래머스 C++ Lv2] 카펫 안녕하십니까. Eun🦆입니다. 풀이법 입니다. 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr #include #include using namespace std; vector solution(int brown, int red) { vector answer; for(int i=1;i=i) { int x=temp; int y=i; printf("x=%d,y=%d\n",x,y); if(2*(x+2)+2*(y+2)-4==brown) { answer.push_back(x+2); answer.push_back(y+.. 2022. 6. 6.
[프로그래머스 C++ Lv2] 위장 안녕하십니까. Eun🦆입니다. 풀이법 입니다. 코딩테스트 연습 - 위장 programmers.co.kr #include #include #include using namespace std; int solution(vector clothes) { int answer = 0; vector kind; for(int i=0;ii;j--) { if(clothes[i][1].size()==clothes[j][1].size()) // 길이가 같은 경우에만 { for(int k=0;k 2022. 6. 6.
728x90