본문 바로가기

Algorithms/PS

(29)
[PS] 백준 #19949. 영재의 시험 문제 정보 난이도: 실버 III 문제 주소: https://www.acmicpc.net/problem/19949 이 문제를 푼 이유: 그룹 연습 Div 2 문제 컴퓨터공학과 학생인 영재는 이번 학기에 알고리즘 수업을 수강한다. 평소에 자신의 실력을 맹신한 영재는 시험 전날까지 공부를 하지 않았다. 당연하게도 문제를 하나도 풀지 못하였지만 다행히도 문제가 5지 선다의 객관식 10문제였다. 찍기에도 자신 있던 영재는 3개의 연속된 문제의 답은 같지 않게 한다는 자신의 비법을 이용하여 모든 문제를 찍었다. 이때 영재의 점수가 5점 이상일 경우의 수를 구하여라. 문제의 점수는 1문제당 1점씩이다. 나의 풀이 이 문제는 표본 공간을 탐색하다가 특정 조건을 만족하면 컷오프를 하는 형태로 만들어야겠다고 생각했다. g..
[PS] 백준 #17390. 이건 꼭 풀어야 해! 문제 정보 난이도: 실버 III 문제 주소: https://www.acmicpc.net/problem/17390 이 문제를 푼 이유: 그룹 연습 Div 2 문제 숭실골 높은 언덕 깊은 골짜기에 출제로 고통 받는 욱제가 살고 있다! 욱제는 또 출제를 해야 해서 단단히 화가 났다. 그래서 욱제는 길이 N짜리 수열 A를 만들고, A를 비내림차순으로 정렬해서 수열 B를 만들어 버렸다!! 여기서 B를 출력하기만 하면 문제가 너무 쉬우니까 하나만 더 하자. 아래와 같은 질문이 무려 Q개나 주어진다!! (ㅎㅎ;; ㅈㅅ.. ㅋㅋ!!) L R: BL + BL+1 + ... + BR-1 + BR 을 출력한다. Figure 1. 모든 참가자가 문제를 풀 수 있을 것이라고 기대하는 욱제의 표정 욱제의 질문에 답하고 함께 엠티..
[PS] 백준 #4673. 셀프 넘버 문제 정보 난이도: 실버 V 문제 주소: https://www.acmicpc.net/problem/4673 이 문제를 푼 이유: 브루트포스 연습 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 ..
[PS] 백준 #23746. 문자열 압축 해제 문제 특정 소문자 문자열 패턴을 대문자 한 글자로 압축하는 프로그램 SPC(String Pattern Compressor)가 있다. 예를 들어, 다음과 같은 방법으로 압축하는 경우, “$\text{aabbaaac}$”는 “$\text{ABAC}$”로 압축된다. 소문자 문자열 패턴 대문자 $\text{aa}$ $\text{A}$ $\text{bba}$ $\text{B}$ $\text{c}$ $\text{C}$ 압축 프로그램과 압축된 문자열이 주어지면, 압축되기 전 문자열의 일부를 출력하는 프로그램을 작성하시오. 나의 풀이 이 문제는 나의 C++ 코드 작성 습관을 점검하기 위해서 작성하였다. 자주 사용하는 헤더 파일들을 미리 include 해두었다. sync_with_stdio, cin.tie, cout.t..
[PS] C++ 알고리즘 Tip 모음 C++로 알고리즘 문제를 풀 때 사용할 수 있는 Tip들 (지속적으로 추가 예정) 1. sync_with_stdio, cin.tie, cout.tie 등을 이용해서 입출력 속도를 높였다. std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); 2. C++ 에서는 string에 + 연산이 가능하다. (JAVA도 가능, C는 strcat로 가능) 3. 헤더파일 을 사용하면 다른 필수적인 헤더파일들을 거의 다 포함하고 있어서 매우 편리하다.