목록프로그래머스 알고리즘/KAKAO (56)
N
https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DFS를 이용한 문제 풀이. 우선 answer에 -Infinity 2개를 넣어주어서 최대값 갱신을 할 수 있도록 한다. 이모티콘 할인율은 10, 20, 30, 40 4개가 있으므로 discounts 배열에 저장. users와 emoticons의 길이를 나타내는 변수 usersLength, emoticonsLength. 각 유저가 이모티콘을 구매했을 때의 비용을 나타내는 userCost를 선언한다..
https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 큐 자료구조를 만들어서 사용하여 시간초과가 나지 않도록 한다. sum1 = queue1의 원소의 합 sum2 = queue2의 원소의 합 우선 두 큐를 직접 정의한 큐에 넣으면서, 각 큐의 총합을 구한다. 두 합이 짝수가 아니라면 -1 리턴, 만약 두 합이 같다면 0을 리턴한다. 이후는 while문을 이용해 두 큐의 합이 같아질 때까지 반복한다. 만약 현재까지의 연산 횟수 answer가 두 큐의..
https://school.programmers.co.kr/learn/courses/30/lessons/118666?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 주어진 조건대로 맵핑을 진행하면 쉽게 풀 수 있다. 성격 유형의 각 지표는 사전순으로 주어졌기 때문에 그대로 array에 저장. 성격의 점수를 저장하기 위한 map도 선언한다. survey를 순회하면서 점수를 구한다. front와 back으로 문자열을 두 개의 문자로 나눈다. 또한, choice[i]의 점수로 어느 성격 지표에 점수를 더할지 정한다. 만약 4..
https://programmers.co.kr/learn/courses/30/lessons/42892?language=javascript 코딩테스트 연습 - 길 찾기 게임 [[5,3],[11,5],[13,3],[3,5],[6,1],[1,3],[8,6],[7,2],[2,2]] [[7,4,6,9,1,8,5,2,3],[9,6,5,8,1,4,3,2,7]] programmers.co.kr 이진 트리를 구성해 전위 순회와 후위순회를 한 결과를 리턴하는 문제. Node 라는 클래스를 정의하여 x, y, num, left, right를 가질 수 있도록 하였다. 이를 이용해 주어진 nodeinfo를 순회하여 노드를 만들어준다. node 라는 배열에 Node 클래스를 가진 node가 있으며, x와 y 좌표를 주어진 조건에..
https://programmers.co.kr/learn/courses/30/lessons/92334?language=cpp 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr map을 이용한 문제 풀이. 3개의 map을 선언하였다. reported는 로 유저가 신고를 받은 횟수를 카운팅한다. done은 로 한 유저가 동일한 유저에 대해 신고를 여러번 했는지 확인하기 위한 map이다. target은 = k 이상이면 count++을 해주고, 내부 for문이 끝나면 answer.push_back(count)를..
https://programmers.co.kr/learn/courses/30/lessons/81303?language=cpp 코딩테스트 연습 - 표 편집 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z"] "OOOOXOOO" 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z","U 1","C"] "OOXOXOOO" programmers.co.kr 링크드 리스트 형태의 구조체를 선언하여 풀이. Node 구조체를 선언하고 내부에는 val, prev, next를 가지도록 한다. 초기값은 모두 -1을 가지며, for문을 통해 값을 모두 갱신한다. Node 구조체 배열을 node라는 이름으로 n개의 크기만큼 선언하고, Node 구조체를 저장..
https://programmers.co.kr/learn/courses/30/lessons/81303 코딩테스트 연습 - 표 편집 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z"] "OOOOXOOO" 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z","U 1","C"] "OOXOXOOO" programmers.co.kr Node class를 선언하여, 양방향 리스트 형태로 문제를 풀었다. Node class는 val, prev, next를 갖는다. 생성자로 val은 매개변수로 받아오며, prev와 next는 null을 가지도록 한다. n개의 크기로 answer와 node를 선언한다. answer는 "O"로 초기화, node는 n..
https://programmers.co.kr/learn/courses/30/lessons/60060 코딩테스트 연습 - 가사 검색 programmers.co.kr Trie 알고리즘 활용. 물음표가 쿼리의 앞에 존재하는지, 뒤에 존재하는지에 따라 Trie 탐색을 다르게 해야 한다. 2가지의 Trie를 선언하여 단어를 저장하는데, 앞에서 단어를 검색하는 경우와 뒤에서 단어를 검색하는 경우를 저장하기 위함이다. 각 Trie를 frontTrie, backTrie라는 이름으로 선언했다. 우선 words에 있는 단어를 중복제거를 하여 newWords에 저장한다. newWords 배열을 순회하면서 단어를 frontTrie와 backTrie에 저장한다. backTrie에 저장하기 위해서는 단어를 뒤집어야 하기 때문에..