본문 바로가기

전체 글153

[백준/C,C++] 10799번: 쇠막대기 www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 풀이 입력으로 3가지의 경우가 입력될 수 있습니다. 1. 쇠막대기가 시작되는 부분 '(' 2. 쇠막대기가 끝나는 부분 ')' 3. 레이저 "()" 레이저가 쇠막대기를 절단할 때 생기는 쇠막대기의 개수는 현재 쇠막대기가 몇 개 깔려있냐에 따라 다릅니다. 그림에서 처음 레이저를 발사할 때 총 3개의 쇠막대기가 깔려 있습니다. '('가 3번 입력된 거죠. 그다음 레이저를 발사할 때도 동일하게 3개입니다. 그리고 쇠막대기가 끝나.. 2021. 4. 20.
[백준/C,C++] 1850번: 최대공약수 www.acmicpc.net/problem/1850 1850번: 최대공약수 모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A www.acmicpc.net 풀이 A, B 길이의 최대 공약수만큼 1을 출력해주면 됩니다. #include using namespace std; using LL = long long; LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } int main(void) { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL.. 2021. 4. 20.
[백준/C,C++] 5585번: 거스름돈 www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net 풀이 그리디 알고리즘 문제 중에서 가장 기초적인 문제입니다. 현재 받을 수 있는 화폐의 종류 중 값이 큰 것부터 잔돈에서 빼주면 됩니다. #include using namespace std; int main(void) { int n; cin >> n; n = 1000 - n; int changes[6] = { 500, 100, 50, 10, 5, 1 }; int res = 0; for (i.. 2021. 4. 20.
[백준/C,C++] 10610번: 30 www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 풀이 30의 배수는 끝자리가 0으로 끝남과 동시에 3의 배수여야 합니다. 즉 입력된 수의 각 자릿수에 0이 하나라도 존재해야 하고, 각 자릿수를 모두 더한 합이 3의 배수여야 합니다. 두 조건을 충족한다면 입력된 수의 각 자릿수를 큰 숫자부터 출력해주면 됩니다. #include using namespace std; int main(void) { int cnt[10] = { 0, }; string s; cin >>.. 2021. 4. 20.