문제 링크 코딩테스트 연습 - 카카오프렌즈 컬러링북 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 풀이 처음에 에러 처리를 위해 양 사이드에 0을 추가하였고(컴퓨터 비전 과목에서 배웠던...) 그리고 BFS로 큐에 넣으면서 같은 number에 있는 것을 연결해주었다. 전역변수로 선언하지 않고 참조자(&)를 사용하여 해결하였다. 더보기 #include #include #include using namespace std; int bfs(vector& picture, int j, int i) { const int color = picture[j][i]; ..
문제 링크 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 �� programmers.co.kr 풀이 해당 문제를 자세히 보면 부분으로 쪼갤 수 있는 단서를 발견한다. 사실 이 문제를 풀 때, 1억이하의 자연수를 준 것으로 보아 일단 long long으로 변수를 해야겠고 해당 문제는 점화식의 문제가 아닌가 생각되어 직접 몇 개 그려서 규칙을 찾아냈다. 일단 부분적인 모양은 자세히 보면 →↓ 로 왼쪽 위 꼭지점에서 오른쪽 아래 꼭지점으로 가는 것과 같다. 즉, width + heigth -1의 개수이다. 부분적인 것..
문제 링크 코딩테스트 연습 - 스킬트리 programmers.co.kr 풀이 순서가 필요한 스킬트리만 뽑아서 순서가 맞는지 검사하였다. 더보기 #include #include #include using namespace std; int solution(string skill, vector skill_trees) { int answer = 0; for(auto elem : skill_trees) { string sk = ""; // 순서에 있는 스킬만 뽑는다 for(int i=0; i
문제 링크 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 풀이 이 문제를 풀 때 stoi 함수를 몰랐기 때문에 직접 점수를 10의 자리에 해당되면 곱하면서 증가시켜주었기 때문에 코드가 많이 길지만 결국은 비교하면서 스택 자료구조를 사용하면 문제를 쉽게 풀 수 있다. 더보기 #include #include #include using namespace std; int solution(string dartResult) { int answer = 0; vector numberArray; vector number; // Numbering numberArray.push_back(dartResult.substr(0, 1)); for(int i=1; i= '0' && dartResult[i] ..
문제 링크 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스�� programmers.co.kr 풀이 stage 번호와 실패율의 pair 변수를 vector 컨테이너로 선언하였다. 그리고 오름차순으로 정렬 후 단계 수와 맞는 인원수를 second에 증가시킨 후 전체 totalPerson로 나눈 것을 second에 다시 넣어주었다. totalPerson은 계속 감소시켜주었다. 마지막에 실패율을 compare 비교함수를 정의하여 정렬하면 first값이 실패율에 따른 stage 번호이다. 더보기 #include #include #include #i..
문제 링크 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 풀이 해당 문제는 비트연산으로 해결하였다. 겹칠 때는 논리합을 사용하고 msb와 비교하며 '#'을 집어넣고 0이면 " "을 집어넣었다. temp 변수를 계산 끝나고 지워주는 역할도 temp &= ~msb로 하였다. 더보기 #include #include #include using namespace std; vector solution(int n, vector arr1, vector arr2) { vector answer(n); int temp;..
문제 링크 코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 �� programmers.co.kr 풀이 d 배열을 오름차순(default)으로 Sort 후 작은 예산을 신청한 부서부터 최대한 넣는 방식으로 해결하였다. 더보기 #include #include #include #include #include using namespace std; int solution(vector d, int budget) { int answer = 0; sort(d.begin(), d.end()); for(int i=0; i= 0) { answer++; budget..
코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 풀이 vector 컨테이너를 사용해 스택 자료구조를 흉내냈다. return해야 될 것은 크레인 작동이 끝난 후 터트려져 사라진 인형의 개수. - 스택에 push할 경우 1. 스택이 비어있다 2. 스택의 top이 크레인으로 끄낸 인형과 다르다. - 스택에서 pop할 경우 1. 크레인으로 끄낸 인형이 스택의 top과 같다.(answer를 2개씩 증가) 더보기 #include #include // 격자의 상태가 담긴 2차원 배열 board // 크레인의 위치 배열 moves(1~1000) //..