SMALL
https://www.acmicpc.net/problem/30802

핵심 전략:
몫, 나머지 연산을 활용
(처음 작성한 코드와 비교하여) 최적화를 한 부분:
처음 구현할 때, 각 티셔츠 사이즈 별로 몫을 구하는 과정을 if문을 사용하여 나머지가 0일 때의 몫과 그 외의 상황에서의 몫을 구하였다. (아래 코드 참고)
for(i = 1; i <= 6; i++){
if (shirt_size[i] % t){
t_shirt += shirt_size[i] / t + 1;
}
else{
t_shirt += shirt_size[i] / t;
}
}
하지만 다른 사람의 코드를 보고 if else 문을 한 줄로 더 효율적인 코드로 대체할 수 있음을 배웠다. 나누려는 수( 위 코드의 경우 변수 t) - 1을 나눠지는 수에 더한 후 t로 나눗셈을 진행해주면 된다 (정답 코드 참고).
정답 코드:
#include <bits/stdc++.h>
#define nl '\n'
using namespace std;
typedef long long ll;
int i, j;
int shirt_size[7];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, t, p;
cin >> n;
for(i = 1; i <= 6; i++){
cin >> shirt_size[i];
}
cin >> t >> p;
int t_shirt = 0;
for(i = 1; i <= 6; i++){
t_shirt += (shirt_size[i] + t - 1) / t; // 최적화를 한 부분
}
cout << t_shirt << nl;
cout << n / p << ' ' << n % p << nl;
return 0;
}
LIST
'BOJ 문제풀이' 카테고리의 다른 글
백준 30804 c++ 풀이 (과일 탕후루) (0) | 2024.08.11 |
---|---|
백준 28702 c++ 문제 풀이 (FizzBuzz) (0) | 2024.08.10 |
백준 23175번 c++ 풀이 (0) | 2021.10.11 |
백준 1644번 c++ 풀이 (0) | 2021.10.10 |
백준 2003번 c++ 풀이 (0) | 2021.10.10 |