코딩테스트 연습/programmers (34) 썸네일형 리스트형 [Programmers] heap > 이중우선순위큐 https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 힙 - 이중우선순위큐 I 숫자 : 큐에 주어진 숫자 삽입 D 1 : 큐에서 최댓값 삭제 D -1 : 큐에서 최솟값 삭제 operations벡터에 [i][0]번째는 항상 I아니면 D이므로 char oper 변수에 넣어준다. [i][1]번째는 공백이므로 [i][2]번째부터 [i]의 크기까지 oper_num 문자열에 저장 후 stoi를 이용해 숫자로 변환한다. I일때는 해당 num을 삽입하고, D일때는 -1인지 1인지 판별 후, -1이면 제일 앞에있는(최솟값)을 지우고, 1이면 제일 뒤에있는(최댓값)을 지운다. 오름차순으로 정렬했으므로 q의 제.. [Programmers] heap > 디스크 컨트롤러 힙 - 디스크 컨트롤러 https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr job벡터를 만들어서, 두번째 인덱스 [0],[1],[2],[3]에 각각 (요청시간, 작업시간, 시작시간, 종료시간)을 저장한다. 요청시간과 작업시간은 문제에서 주어져있고, 시작시간은 요청시간으로, 종료시간은 요청시간+작업시간으로 초기화해둔다. job벡터의 시작시간을 비교하여 오름차순으로 정리한다. 시작시간이 같은경우에는 종료시간을 .. [Programmers] hash > 전화번호 목록 해시 - 전화번호 목록 Programmers에서는 입력이 주어지므로 main에 임시 예제를 넣고 테스트했다. phone_book의 배열을 오름차순으로 정리한 뒤, 양 옆을 비교하여 하나라도 틀린게 있다면 true로, 접두어로 한 단어라도 겹치는게 있다면 false를 출력한다. false가 하나라도 있으면 바로 return을 해줘서 효율성을 높였다. 코드 #include #include #include #include using namespace std; bool solution(vector phone_book) { bool answer = true; sort(phone_book.begin(), phone_book.end()); for(int i=0;i [Programmers] hash > 위장 (c++) 해시 - 위장 https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr main함수는 예제 디버깅을 위해 추가했다. 답은 solution만 해당. clothes 2차원 string 벡터 배열에는 [옷, 카테고리]순서대로 저장되어있다. unordered_map 벡터를 이용해 pair[1]번째 요소 (카테고리)가 같은것을 모아 개수를 저장하고, iterator i를 이용해 개별 카테고리 개수를 +1한 값에, 카테고리별로 곱해준 후, 전체에서 -1을 해준다. ex) 답 = (카테고리1 옷개수 + 1)*(카테고리2 옷개수 +1) - 1 코드 #include #include #include #include #in.. [Programmers] hash > 베스트앨범 해시 - 베스트앨범 https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr genres_plays를 unordered_map으로 선언해서 장르, 플레이횟수, 고유번호 순서대로 저장한다. hash에는 해당 카테고리에 해당하는 플레이횟수만 더한다. genres_plays를 plays가 큰 순서대로 내림차순 정렬한다. hash는 unordered_map의 로 선언했으므로 정렬이 불가능하다, hash_v 벡터를 선언하여 .. [Programmers] 문자열 압축(c++) https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr for문 i는 문자열 압축 단위, for문 j는 현재 문자열의 위치를 의미한다. 1. comp를 비교대상 문자열으로 초기화한다. 2. j는 i번째부터 시작한다. comp와 비교해서 같으면 cnt++, 다르면 cnt와comp값을 동시에 저장한다. (1일때는 comp값만 저장한다) 3. 다시 comp를 현재 s의 substr(j,i)번째로 초기화 후 2번을 .. [Programmers] 프로그래머스 > 124 나라의 숫자(c++) https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 코딩테스트 연습 > 연습문제 > 124 나라의 숫자 처음엔 dp 방법으로 풀었는데, 시간초과가 나서 다른 방법으로 접근했다. 아무리 시도해봐도 숫자가 3자리수가 넘어가게 되면 답이 거꾸로 출력이 돼서, 구글 검색으로 answer = 연산 도중 계산된 숫자 + answer 이렇게 하면 거꾸로 출력되지 않는것을 확인하고 다시 풀었다. 1. remainder에는 (n-1)%3으로 나눈 나머지를 num의 인덱스에서 찾은 값 저장 2. answer에 연산된 remainder를 끝부분에 추가 3. n은 (n-1)/3 해주고, n 0) { int.. [Programmers] 프로그래머스 단체사진 찍기(c++) https://programmers.co.kr/learn/courses/30/lessons/1835 코딩테스트 연습 - 단체사진 찍기 단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 programmers.co.kr 코딩테스트 연습 < 2017 카카오코드 본선 < 단체사진 찍기 문제풀이 팁💡 {A, C, F, J, M, N, R, T} 를 하나씩 순열을 세워서, 문제에서 주어진 data의 모든 조건을 통과하는 순열만 answer++ 한다. 1. 헤더에 들어있는 next_permutation함수를 사용하여 friends에 대한 순열을 하나씩 뽑아낸다. 2. 뽑아낸 순열을 d.. 이전 1 2 3 4 5 다음