본문 바로가기

분류 전체보기

(72)
[2020카카오공채] 블록 이동하기 https://programmers.co.kr/learn/courses/30/lessons/60063 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr BFS를 이용해서 푸는 문제! 멍청하게 DFS로 풀었다가 시간초과가 떴다. .. 덕분에 같은 실수 두번은 하지 않을 것 같다. 탐색한 결과를 저장할 배열로 이차원 배열인 way_h, way_v를 선언했다. 아니면 3차원 배열로 선언해줘도 되고.. 상, 하, 좌, 우로 움직이는 경우와 회전하는 경우를 모두 일일히 코딩해줘야 하기 때문에 구현 실수하기 딱 좋은 문제이다. #include #include #incl..
[2020카카오공채] 외벽 점검 https://programmers.co.kr/learn/courses/30/lessons/60062 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 으왕.. 다른분들 풀이 참고해가면서 어렵게 푼 문제 순열을 이용해서 푸는 거라고는 생각했지만 순열을 어떻게 구현해야 할지, weak 배열을 어떻게 탐색해야 할지 쉬이 감이 오지 않았다. 순열은 algorithm 헤더에 있는 next_permutation을 이용하면 쉽게 구현할 수 있다. next_permutation에 인자로 배열의 포인터를 넘겨주면 알아서 배열을 다음 순열로 만들어준다. 뿐만 아니라 리턴값으..
[2019 카카오 개발자 겨울 인턴십] 튜플 https://programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 주어진 문자열을 파싱하면서 각각의 숫자가 몇번 나오는지만 카운트하면 쉽게 풀린다. 자주 등장하는 숫자일수록 튜플의 앞쪽에 있는 숫자이기 때문이다. 따라서 각각의 숫자가 몇번 나오는지 카운트 한 뒤, 빈도수를 내림차순으로 정렬하면 구하고자 하는 답이 나온다. (번거롭게 괄호, 쉼표까지 파싱할 필요가 없다) 빈도수를 저장하기 위해 unordered_map을 사용하였고 최종적으로 map의 원소들을 탐색하..
[2019 카카오 개발자 겨울 인턴십] 크레인 인형뽑기 게임 https://programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include using namespace std; int solution(vector board, vector moves) { int answer = 0; int col = board[0].size(); vector bd(board.size()); stack bucket; for (int i = board.size() - 1; i >= 0; i--) { for (int j ..
[2019 카카오 개발자 겨울 인턴십] 징검다리 건너기 https://programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 단순히 반복문 돌려가면서 징검다리 숫자를 1씩 빼 주는 방식으로 푸는 문제가 아니라는 것은 너무나도 당연해 보인다. 이 문제는 결국 각 징검다리 숫자에서 n씩 뺐을 때, 0보다 작거나 같은 돌이 최소 연속 k개 있게끔 만드는 n의 최솟값을 구하는 문제이다. => 이걸 더 단순화 시키면, 징검다리의 연속된 돌을 k개 묶어서 돌에 적힌 숫자의 max를 구한 뒤, max 중 가장 작은 값을 구하는 문제와 같다. 예..
[2019 카카오 개발자 겨울 인턴십] 호텔 방 배정 https://programmers.co.kr/learn/courses/30/lessons/64063 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr room_number의 크기가 최대 200,000이므로 단순 반복문으로는 풀 수 없는 문제이다. 이 문제는 유니온파인드를 이용하면 매우 간단히 풀 수 있다. 다만 방의 개수가 무려 10^12개이므로 모든 방에 대해 배열을 선언하는 것은 불가능하다. 따라서 unordered_map을 이용하여 방이 배정되어 merge가 일어나는 경우에만 urordered_map에 데이터를 집어넣었다. #include #inclu..
[2019 카카오 개발자 겨울 인턴십] 불량 사용자 https://programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아이디와 일부 문자가 *로 표기된 불량 아이디 목록이 주어졌을 때 불량 아이디 목록과 일치하는 아이디 셋의 종류가 몇 개인지를 출력하는 문제이다. 인풋사이즈가 정말 작기 때문에 그냥 2중 for문을 돌리면서 글자를 하나하나씩 검사해도 잘 풀린다. => 여기서 검사결과를 저장하기 위해 2차원 배열인 mapping_id 를 선언하였다. (banned_id 별로 가능한 id의 index를 저장) 따라서 이 문제의 ..
[2020카카오공채] 가사 검색 https://programmers.co.kr/learn/courses/30/lessons/60060 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 단순 문자열끼리 비교하는 방식으로 코드를 짜면 효율성 테스트에서 탈락한다. 따라서 효율적인 알고리즘을 생각해내야 하는 문제인데.. 처음 내가 짰던 코드는 문자열을 소팅한 후 문자열을 길이별로 저장하는 2차원 배열을 만들어서 배열을 binary search 하는 방식이었다. 이렇게 짜니 효율성 테스트는 간신히 통과했으나 코드가 더럽고 binary search도 직접 구현해야 하는 어려움이 있었다. #includ..