#include<bits/stdc++.h>
using namespace std;
int A, B;
void output(int a, int b){
cout << a + b << '\n';
}
int main(){
while(cin >> A >> B){
output(A, B);
}
}
입력의 끝이 정해져 있지 않았다는 사실을 간과하고 당연하게 cin cout으로만 문제를 해결하려해서 오답을 받았다.
입력의 끝이라는 표현을 할 EOF를 사용 했어야했다.
while문 안에 A와 B가 입력이 있는 동안 A+B의 값을 출력하도록 하면 됐다.
#include<bits/stdc++.h>
using namespace std;
string s;
void output(string s){
cout << s << '\n';
}
int main(){
while(getline(cin,s))
output(s);
}
기본적인 문제였다.
띄어쓰기 문장도 그대로 입력 받는 능력을 요구하는 문제였는데 매번 사용할 때 마다 검색해서 사용해서 한번 정리했다.
getline 함수를 통해 string s에 cin 받으면 된다.
--> getline(cin,s) 하면 띄어쓰기와 상관없이 입력을 받는다.
#include <bits/stdc++.h>
using namespace std;
int cnt;
int sum;
string s;
void inputCnt(){
cin >> cnt;
}
void input(){
cin >> s;
}
void sol(){
sum = 0;
for(int i = 0; i < cnt; i++){
sum += s[i] - 48;
}
cout << sum << '\n';
}
int main(){
inputCnt();
input();
sol();
}
컴퓨팅 사고를 하자는 의미에서 정리했다.
"숫자를 더해라"라는 워딩에 속아 연산을 생각했는데 숫자를 문자로 생각하면 되는 간단한 문제였다.
아스키 코드 값만큼 빼서 계산하면 된다.
#include <bits/stdc++.h>
using namespace std;
int x, y;
int months[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
string days[7] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
void input(){
cin >> x >> y;
}
void sol(){
int total = 0;
int ret = 0;
for(int i = 0; i < x-1; i++){
total += months[i];
}
total += y;
ret = total % 7;
cout << days[ret];
}
int main(){
input();
sol();
}
간단한 구현 문제였다.
2번이나 오답을 받아서 이유를 도저히 찾을 수 없었으나
total과 ret을 0으로 초기화 해주니 정답이 되었다.
변수가 0으로 초기화 되지 않을 수도 있다는 점을 생각하지 않아서 정리했다.
#include <bits/stdc++.h>
using namespace std;
vector<int> input(){
int n;
int a;
vector<int> v;
cin >> n;
for(int i = 0; i < n; i++){
cin >> a;
v.push_back(a);
}
return v;
}
void sol(vector<int> v){
int min = 1000001;
int max = -1000001;
for(auto k : v){
if(k < min) min = k;
if(k > max) max = k;
}
cout << min << " " << max << '\n';
}
int main(){
sol(input());
}
for(auto k : v) {
if(k < min) min = k;
else if(k > max) max = k;
}
일 때는 오답을 받았다.
else if 대신 if를 2개 쓴 이유에 대해 생각해야한다.
--> if 와 else if는 한 문장에 대해 하나의 조건이라고 생각한다면
if와 if는 한 문장에 대해 두 개의 잣대를 갖다 비교하는 것이라 생각하면 된다.
다시 말해, if와 else if는 if 조건에 부합하면 else if의 조건과 비교하지는 않지만 if와 if는 두 번 비교하는 것이다.
#include <bits/stdc++.h>
using namespace std;
int input(){
int n;
cin >> n;
return n;
}
void sol(int num){
for(int i = 0; i < num; i++){
for(int j = 0; j < i; j++) cout << " ";
for(int j = 0; j < 2 * (num-i) -1; j++) cout << "*";
cout << '\n';
}
for(int i = 0; i < num -1; i++){
for(int j = 0; j < num-i-2; j++) cout << " ";
for(int j = 0; j < 2 * (i+2) - 1; j++) cout <<"*";
cout << '\n';
}
}
int main(){
sol(input());
}
출력 형식이 계속 잘못된 문제였다.
문제의 조건을 다시 확인해보니 약간의 변칙이 있는 문제였다.
조건을 잘 확인 하자는 의미에서 정리했다.
*찍기 문제를 여러개 풀다보니 나름의 노하우?가 생겼다
이정도만 해도 웬만한 별 찍기는 다 해결이 되는듯 하다.
너무 당연한 소리같긴 하지만...
이제까지 문제를 무작정 풀었다.
유형별로 그냥 부딪히고 해설을 참고하고 풀고 반복을 했는데 새로운 문제를 볼 때마다 풀 수 있다는 생각보다는 알 것 같은데? 본 것 같은데? 라는 생각만 자꾸 들었다.
모르는게 무엇인지 찾아야 했다.
모르는게 뭐고 부족한게 뭔지 알아내야 성장할 수 있을 듯한 느낌이 들었다.
그래서 시작했다.
입출력, DP, 그리디, 그래프, 이분 탐색, 분할 정복, 완전 탐색 모두 기본 + 응용 문제들을 풀어보며 부족한 점에 대해 체크해야겠다.
입출력 너무 쉽다고만 생각했는데 생각보다 놓치는 부분을 꽤나 찾은 것 같아서 기분이 좋았다.