본문 바로가기

C++105

[C++] 백준 2981번 : 검문 https://www.acmicpc.net/problem/2981 2981번: 검문 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간 www.acmicpc.net 문제 풀이 수학적인 사고를 요구하는 문제이다!! 문제에서 찾아야 하는 M은 같은 나머지(이하 R)를 만드는 숫자이다. 어떤 값 arr[i]를 M으로 나눴을 때 나머지가 R이 나오면 식은 다음과 같을 것이다. arr[i] = M × (arr[i] / M) + R 그렇다면 다음 값들은 arr[i+1] = M × (arr[i+1] / M) + R 이런식으로 이어진다. 여기서 R을 없애주기만 한다면 M을 구하기가 더 쉬.. 2021. 7. 3.
[C++] 백준 13305번 : 주유소 https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 문제 풀이 값들을 입력받고 최솟값을 최신화해서 두 도시 사이의 거리와 최솟값을 곱해서 결과에 더해주면 된다. 여기서 최솟값임을 따지는 것이 그리디 알고리즘의 핵심이다! 함수 Solution i번째 값이 최솟값보다 작으면 최솟값을 최신화한다. 이후 최솟값과 i번째 거리와 곱해서 ans에 더한다. 느낀 점 처음에 프로그래머답지 못하게 문제를 너무 1차원적으로 접근했다. 각 거리 값을 더.. 2021. 7. 1.
[C++] 백준 1541번 : 잃어버린 괄호 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 문제 풀이 식이 주어졌을 때 최솟값을 만드는 문제이다. 단순하게 -가 등장하면 괄호를 열거나 닫아서 식을 최소로 만들 수 있다. 따로 괄호가 들어간 식을 보일 필요가 없으므로 -가 등장한 순간부터 이후의 모든 숫자들을 빼면 최솟값이 만들어진다! 변수 string str : 입력받은 식을 저장 string num : str에서 숫자 부분만 저장 int ans : 계산되는 값을 저장 bool i.. 2021. 7. 1.
[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.