coding_test/programmers

coding_test/programmers

lv2 / 3 x n 타일링 / C++

https://school.programmers.co.kr/learn/courses/30/lessons/12902 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 보고나서 맨 처음 들었던 생각은 dfs를 통해서 모든 타일을 구해볼까 했다가, 시간초과가 날 것 같았다. 괜히 " 경우의 수가 많아 질 수 있으므로, 경우의 수를 1,000,000,007으로 나눈 나머지를 return해주세요." 라는 제한사항이 걸려있는게 아닐 것이기 때문이다. 그래서 완전탐색으로 알아보자는 생각은 얼마 안가 접게 되었고, 차근차근 생각해보기로 했다. N = 4일때는 2칸씩..

coding_test/programmers

lv2 / n^2 배열 자르기 / C++

https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제를 실제로 2차원 배열로 만들어서 일일이 1차원 배열로 바꾸고, 이를 자르는 구현을 한다면 뭐 당연히 시간초과나 메모리초과 둘중하나는 무조건 뜰 것이다. n의 최댓값이 10^7인데, n X n 크기의 2차원 배열을 만든다면, 10^14개의 int가 들어가고, 여기서 메모리 초과가 당연히 날 것. 결국 우리는 배열을 만드는 것이 아닌, i행 j열의 숫자를 i와 j를 통해 일반화하여, 그 숫자..

coding_test/programmers

lv1 / 로또의 최고 순위와 최저 순위 / C++

https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 구현문제이다. 굳이 알고리즘적이 내용을 부여하자면 탐색문제이다. 그것도 아주 간단한 순차탐색. 몇개의 숫자가 지워져 있기 때문에, 최저 순위는 지워지지 않은 나머지 숫자중에서 정답과 일치하는 숫자의 개수로 따지면 될 것이고, 최고 순위는 여기에 0의 개수를 더해주면 될 것이다. 간단한 상황을 통해 이해해보자. 만약 0이 3개이고, 같은 숫자가 2개, 다른 숫자 1개라면, 최저 5등은 보장한다. 2..

coding_test/programmers

lv2 / 피로도 / C++

https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사실 처음 봤을 때에는 그리디나 DP로 접근해야할 것 같았는데, 개수가 생각보다 많지 않아서, 완전탐색으로 진행해도 무방할 것 같았다. 모든 경우를 따지기 위해, C++의 next_permutation함수를 통해 순열을 구성했고, 이를 통해 모든 경우를 탐색했다. #include #define ALL(X) X.begin(),X.end() using namespace std; int solution..

coding_test/programmers

lv1 / 성격 유형 검사 / 카카오 / C++

https://school.programmers.co.kr/learn/courses/30/lessons/118666 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 그냥 구현문제이다. map을 통해 모든 성격 유형에 대해 점수를 매기고, 더 큰 점수를 가진 성격유형을 붙여주면 된다. #include using namespace std; string solution(vector survey, vector choices) { // 변수 선언 및 초기화 string answer = ""; array category = {'R', 'T', 'C', 'F', 'J'..

coding_test/programmers

lv2 / 양궁대회 / 카카오 / C++

https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr dfs를 통한 완전탐색 기법은 아직도 감을 잘 못잡겠다. 솔직히 완전탐색을 해야한다는 것만 알아채고, 딱히 뭘 더 할 수 없었다. 공부는 해도해도 부족하고 새로운 것 같다. dfs를 통해 화살을 적절히 배치해준다. 적절히 배치라는건 무슨 뜻일까? 양궁대회 운영진들은 라이언을 억까(?)하기 위해 규칙을 불리하게 만들었다. 그래서 어피치가 K점에 a개의 화살을 쐈다면, 라이언에게는 두가지의 선택지가 ..

coding_test/programmers

lv2 / K진수에서 소수 개수 구하기 / 카카오 / C++

https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 비록 N이 100만까지밖에 안되지만, 이를 K진수로 변환하면 더 커질수 있기 때문에, K진수로 변환한 값은 문자열로 받아서 처리하는게 안전하다고 판단했다. 이후, 0을 기준으로 숫자를 쪼개고, 각각 소수판별을 해주면 된다. 만약 테스트 케이스를 통과하지 못했다면, 필자의 글이 도움이 되길 바라며 필자가 겪은 오류와 오답을 적어보도록 하겠다. 테스트케이스 1번은 극한 케이스이다. (맨 뒤에 나오는 ..

coding_test/programmers

lv2 / 두 큐 합 같게 만들기 / 카카오 / C++

https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 일단, 문제에서 친절하게도 오버플로우의 가능성을 미리 말해줬기 때문에, 안전하게 long long 이상의 자료형을 사용하자. 필자는 uint64_t 자료형을 사용했다. 두 큐의 합이 같아지도록 큐의 FIFO특성을 이용하여 문제를 풀어야 한다. queue1, queue2의 원소의 총합을 sum1, sum2라고 한다면, 우리는 원소를 적절하게 push, pop하여 sum1 == sum2가 되도록 만..

CodeJin
'coding_test/programmers' 카테고리의 글 목록