문제 링크 코딩테스트 연습 - 단체사진 찍기 단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 � programmers.co.kr 풀이 처음에 많이 고민했다. 재귀로 하면 비효율적 일지 하면서 찾아보았더니 재귀로도 풀린다고는 한다. 하지만 함수 하나로 끝내고 싶었기에 next_permutation() 함수를 사용하여 순열을 돌렸고 모든 조건을 검사하였다. 완전 탐색이다. 1. 자리를 배치한다. 2. sort한다.(오름차순- next_permutation(), 내림차순- prev_permutation()) 3. do-while()문으로 조건 검사하며 개수를 증가시킨다. 더보..
문제 링크 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴� programmers.co.kr 풀이 풀이 순서를 주었기 때문에 해당 solution함수를 재귀 함수로 주어진 풀이대로 수행하였다. 풀이를 주니까 따라서 하기만 했더니 바로 성공 더보기 #include #include #include #include using namespace std; string solution(string p) { string u = ""; string v = ""; // 빈 문자열 검사 if(p.length()==0) { return ""; } else { /..
문제 링크 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr 풀이 bundle변수를 선언하여 1개씩 묶은 것부터 문자열의 length/2까지 묶은 것의 개수를 vector 컨테이너에 넣고 최소를 return 하였다. 더보기 #include #include #include using namespace std; int solution(string s) { int answer = s.length(); int bundle = 1; int len = s.length(); vector v; // cout
문제 링크 코딩테스트 연습 - 카카오프렌즈 컬러링북 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..