전체 글411 [C++] 프로그래머스 : 로또의 최고 순위와 최저 순위 https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 문제 풀이 알아볼 수 없는 숫자(0)의 개수는 unknown으로 저장하고 그 외에 숫자를 당첨 숫자에 비교해서 cnt에 저장한다. 0이 모두 당첨 숫자가 된다면 rank는 최고가 될 것이고 모두 당첨 숫자가 아니라면 rank가 최저가 될 것이다. 따라서 cnt에 unknown을 더한 값을 계산했을 때 최고 순위, c.. 2021. 7. 1. [C++] 표준 템플릿 라이브러리 (STL) : 컨테이너 (vector, map) 표준 템플릿 라이브러리(STL)란? 템플릿으로 작성된 많은 제네릭 클래스와 함수 라이브러리! STL에 포함된 제네릭 클래스와 함수들은 "컨테이너", "iterator", "알고리즘" 3가지로 분류된다. 컨테이너는 자료 구조를 구현한 클래스로 맵(map), 셋(set), 벡터(vector), 리스트(list) 등이 있다. 이번 글은 벡터와 맵에 대해서 정리한다! 속도적인 측면에선 배열보다 떨어지지만 메모리 관리에 있어서는 아주 효율적이다! 벡터는 size와 capacity가 따로 존재한다! 이유는 새로운 원소가 들어올 때마다 새로운 공간을 할당하면 비효율적이기 때문이다. 그렇기에 벡터는 새로운 원소가 들어오면 추가적인 메모리 공간을 할당한다. (이전 공.. 2021. 7. 1. [C++] 프로그래머스 : 완주하지 못한 선수 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 문제 풀이 map을 선언하고 완주자에 대해서 value 값을 +1 해준다. 참가자에 대해서 value 값을 -1 해준다. map의 값이 음수면 완주하지 못한 대상이므로 리턴해준다. 느낀 점 이번 기회로 STL 제네릭 컨테이너인 map에 대해서 공부하게 되었다. map을 이해하면 쉬운 문제이다. 코드 #include #include #inclu.. 2021. 7. 1. [C++] 백준 11399번 : ATM https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 풀이 배열에 값들을 입력받고 정렬한다. 현재 최적의 값은 대기시간이 가장 짧을 때 이므로 처리시간이 짧은 순서대로 오면 되기 때문에 정렬하는 것이다. 두 가지 풀이법이 있다. 1. 대기 시간을 따로 계산해서 총 걸린 시간에 더한다. 2. 덧셈이 반복되기 때문에 총 걸린 시간은 i번째 값 * n-i 번이다. 느낀 점 쉬운 문제였지만 제출 이후에 다르게 구성할 방법을 생각해보았다. 코드 #include #include usi.. 2021. 6. 28. [C++] 백준 1931번 : 회의실 배정 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제 풀이 그리디 알고리즘의 원리인 "현재 가장 좋은 것 고르기"에 기반해서 생각하면 최대 개수는 다음 회의까지 공백이 가장 짧을 때이다. 구조체로 구현한 배열은 회의 시간의 시작과 종료시간을 저장한다. STL에서 지원하는 sort 함수를 활용해서 배열의 종료시간을 기준으로 내림차순으로 정렬한다. 내림차순으로 정렬하는 이유는 공백 시간을 종료 시간으로 따질 것이기 때문이다. 또한, 정렬되어있는 배열을 통해서 i번째 회의의 시작 시간이 이전 회의의 종료 시간보다 크거나 같을 때를 따지기 때문에 회의의 개수를 따지기.. 2021. 6. 27. [C++] 백준 11047번 : 동전 0 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 문제 풀이 그리디 알고리즘은 현재 가장 최적의 것부터 사용하는 알고리즘이다. 동전 개수가 최소가 되려면 가장 큰 것부터 따지면 된다. 느낀 점 그리디 알고리즘의 시작이다! 문제 자체가 쉬워서 최대한 이쁘게 코드를 짜고 싶었다. 제출하고 보니 지저분 한 것 같기도 하다. 코드 #include #include using namespace.. 2021. 6. 26. 이전 1 ··· 55 56 57 58 59 60 61 ··· 69 다음