반응형

백준 249

[백준 / BOJ] C++ 28702 FizzBuzz

28702번: FizzBuzz 문제 https://www.acmicpc.net/problem/28702 28702번: FizzBuzz FizzBuzz 문제는 $i = 1, 2, \cdots$ 에 대해 다음 규칙에 따라 문자열을 한 줄에 하나씩 출력하는 문제입니다. $i$가 $3$의 배수이면서 $5$의 배수이면 “FizzBuzz”를 출력합니다. $i$가 $3$의 배수이지만 $5$ www.acmicpc.net 풀이 대회 도중에는 isdigit 함수가 생각이 안났다.. 문자의 첫번째 글자가 ascii 코드 기준 숫자인지로 문자열 전체가 숫자인지 판단했다. 입력받은 a, b, c 중 반드시 하나는 숫자이기 때문에 각각에 대해 숫자인 경우에 +1, 2, 3을 해서 조건에 맞게 출력했다. 코드 #include us..

Problem Solving/BOJ 2023.08.15

[백준 / BOJ] C++ 28701 세제곱의 합

28701번: 세제곱의 합 문제 https://www.acmicpc.net/problem/28701 28701번: 세제곱의 합 $a$의 제곱은 $a$를 두 번 곱한 수로, $a^2$으로 표현합니다. $a^2 = a \times a$입니다. 또한, $a$의 세제곱은 $a$를 세 번 곱한 수로, $a^3$으로 표현합니다. $a^3 = a \times a \times a$ 입니다. www.acmicpc.net 풀이 주어진 대로 수식을 출력하면 된다. pow 함수는 return value가 double이기 때문에 type 변환을 꼭 해줘야 한다. 혹은 변수에 저장한 다음 출력해야 한다. 코드 #include using namespace std; int main() { ios::sync_with_stdio(0);..

Problem Solving/BOJ 2023.08.15

[백준 / BOJ] C++ 17430 가로등

17430번: 가로등 문제 https://www.acmicpc.net/problem/17430 17430번: 가로등 2차원 공간 위에 가로등이 N개 배치되어 있다. i번째 가로등의 위치는 (xi, yi)이고, 각 좌표는 정수이다. 서로 다른 가로등의 위치가 같은 경우는 없다. 두 가로등 i와 j(i < j)가 있을 때, (xi, yj)와 (xj www.acmicpc.net 풀이 두 전봇대의 x좌표가 같은 경우, y좌표를 바꾸어도 반드시 균형 잡힐 수밖에 없다. 두 전봇대의 x좌표가 다른 경우, x좌표에 대한 y좌표의 집합이 같은 경우에만 균형 잡혀있다고 볼 수 있다. 따라서 집합 비교를 위해 map을 사용해 key를 x좌표로, value를 y좌표의 집합으로 사용했다. (벡터의 배열로 만들었어도 괜찮았을 ..

Problem Solving/BOJ 2023.08.12

[백준 / BOJ] C++ 27965 N결수

27965번: N결수 문제 https://www.acmicpc.net/problem/27965 27965번: N결수 $10$진법 상에서 양의 정수 $1$, $2$, $3$, $\cdots$, $N$을 이어 붙여 만든 수 $\overline{123\cdots N}$을 $N$결수라고 한다. 예를 들어 $12345$는 $5$결수이고, $12345678910111213$은 $13$결수이다. $N$과 정수 $K$가 주어 www.acmicpc.net 풀이 N결수를 만들고 K로 나누기엔 N결수가 너무 큰 수가 되기 때문에 long long의 범위를 벗어나게 된다. 따라서 과정을 쪼개 중간중간에 나머지 연산을 해야한다. N = 5, K = 7인 경우를 예로 들면, 1~5를 차례대로 나열해야한다. 이때 1을 K로 나눈 ..

Problem Solving/BOJ 2023.08.12

[백준 / BOJ] C++ 23322 초콜릿 뺏어 먹기

23322번: 초콜릿 뺏어 먹기 문제 https://www.acmicpc.net/problem/23322 23322번: 초콜릿 뺏어 먹기 연두는 $N$개의 통에 초콜릿을 담아서, 초콜릿의 개수가 오름차순이 되도록 일렬로 배열해 놓는다. 즉, ($1$번째 통의 초콜릿의 개수) $\le$ ($2$번째 통의 초콜릿의 개수) $\le \dots \le$ ($N$번째 통의 www.acmicpc.net 풀이 이 문제에서 예제를 보면, 모든 통의 초콜릿 개수가 초콜릿 수가 가장 적은 통과 같도록 만든다. 입력받는 값 중 K는 사실상 필요없는 값이고, 입력받은 배열을 오름차순으로 정렬하면 0번 index의 값이 최솟값이 된다. 1번부터 N-1번 index까지 값을 순회하며 0번 index의 값(최솟값)보다 큰 경우에만..

Problem Solving/BOJ 2023.08.11

[백준 / BOJ] C++ 17291 새끼치기

17291번: 새끼치기 문제 https://www.acmicpc.net/problem/17291 17291번: 새끼치기 실험실에서 새로운 종의 벌레 한 마리가 탄생하였다. 벌레는 스스로 분열하며, 분열하면 자기 자신과 같은 벌레를 한 마리 만들어 내게 된다. 벌레가 분열하는 규칙은 다음과 같다. 벌레는 기준 www.acmicpc.net 풀이 1년에는 1마리, 2년에는 2마리, 3년에는 4마리, 4년에는 8마리가 되었다가 1년에 탄생한 1마리가 죽어 7마리가 된다. 계속해보면 5년에는 14마리가 되고, 6년에는 28마리가 되었다가 2년에 탄생한 1마리와 3년에 탄생한 2마리가 죽어 25마리가 된다. 여기서 홀수년에 탄생한 개체는 3번 분열 후, 짝수년에 탄생한 개체는 4번 분열 후 사망하기 때문에 반드시 ..

Problem Solving/BOJ 2023.06.01

[백준 / BOJ] C++ 18186 라면 사기 (Large)

18186번: 라면 사기 (Large) 문제 https://www.acmicpc.net/problem/18186 18186번: 라면 사기 (Large) 라면매니아 교준이네 집 주변에는 N개의 라면 공장이 있다. 각 공장은 1번부터 N번까지 차례대로 번호가 부여되어 있다. 교준이는 i번 공장에서 정확하게 Ai개의 라면을 구매하고자 한다(1 ≤ i www.acmicpc.net 풀이 [백준 / BOJ] 18185 라면 사기 (Small) 문제 / [백준 / BOJ] 18185 라면 사기 (Small) 풀이 위 문제를 먼저 풀고 난 후 풀면 비교적 쉽게 풀 수 있다. 위 문제와의 차이점은 1군데, 2군데, 3군데 구매했을 때 가격이 3, 5, 7이 아니라 b, b+c, b+2*c 라는 것이다. 즉, 위 문제는 ..

Problem Solving/BOJ 2023.05.17

[백준 / BOJ] C++ 18185 라면 사기 (Small)

18185번: 라면 사기 (Small) 문제 https://www.acmicpc.net/problem/18185 18185번: 라면 사기 (Small) 라면매니아 교준이네 집 주변에는 N개의 라면 공장이 있다. 각 공장은 1번부터 N번까지 차례대로 번호가 부여되어 있다. 교준이는 i번 공장에서 정확하게 Ai개의 라면을 구매하고자 한다(1 ≤ i www.acmicpc.net 풀이 처음에는 앞에서부터 최대한 많이 3군데 연속해서 구매하고, 다시 앞에서부터 2군데, 그리고 낱개를 구매하도록 했으나 WA를 받았다. 2~3시간 정도 고민하다가 질문 게시판에서 반례 테스트 케이스를 얻어 2시간 정도 더 고민하고서야 풀었다. 0번 공장부터 차례대로 방문하며 아래 과정을 거친다. 1. i, i+1, i+2번째 공장에서..

Problem Solving/BOJ 2023.05.16

[백준 / BOJ] C++ 10988 팰린드롬인지 확인하기

10988번: 팰린드롬인지 확인하기 문제 https://www.acmicpc.net/problem/10988 10988번: 팰린드롬인지 확인하기 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 풀이 먼저 문자열을 입력받고 이를 복사한다. 복사한 문자열을 헤더파일의 reverse 함수를 사용해 뒤집어준다. 그리고 원본과 뒤집힌 복사본의 일치 여부를 출력한다. 코드 #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); string a, b; cin >> a; b = a; reverse(b.begin(), b.end(..

Problem Solving/BOJ 2023.05.15

[백준 / BOJ] C++ 15786 Send me the money

15786번: Send me the money 문제 https://www.acmicpc.net/problem/15786 15786번: Send me the money 입력의 첫째 줄에 석규가 기억하는 원본 알파벳의 수 N(1 ≤ N ≤ 100)과 포스트잇의 개수 M(1 ≤ M ≤ 1000)이 주어진다. 다음 줄에 길이가 N인 알파벳 대문자로 이루어진 문자열 S가 주어진다. 이 후 M www.acmicpc.net 풀이 기억하는 원본 알파벳의 각 글자가 순서대로 있는지 포스트잇의 문자열에서 찾으면 된다. 문자열의 find 메소드로 원본의 0번 index의 글자를 포스트잇의 처음부터 찾고 존재한다면 그 위치 + 1부터 1번 index의 글자를 찾으며 반복한다. 중간에 찾을 수 없다면 flag를 1로 바꾸고 멈..

Problem Solving/BOJ 2023.05.15
반응형