본문 바로가기
백준

백준 단계 3. 반복문

by 템닉___ 2024. 3. 17.

이 포스팅은 템닉의 개발저장소의 레거시 글입니다.

 

템닉의 개발저장소

기억 못할 수도 있는 지식들을 덤프해버리는 공간입니다.

tempnixk.tistory.com

 

1. 구구단 (문제번호 2739)

#include <iostream>
using namespace std;

int main() {
  unsigned short i, N;
  cin >> N;

  for(i=1;i<10;i++) {
    cout << N << " * "<< i << " = " << N * i << endl;
  }
  
  return 0;
}

2. A+B-3 (문제번호 10950)

#include <iostream>
using namespace std;

int main() {
  unsigned short T, A, B, i;
  cin >> T;
  
  for(i=0;i<T;i++) {
    cin >> A >> B;
    cout << A + B << endl;
  }
  
  return 0;
}

출력이랑 입력이랑 콘솔창에 섞여도 되나 궁금해서 짜본 코드. 
입력이랑 출력이랑 따로 구분해서 채점이 들어가는것 같다.

 

 

3. 합 (문제번호 8393)

#include <iostream>
using namespace std;

int main() {
  unsigned short n = 0, i = 0; 
  int result = 0;
  cin >> n;
  
  for(i=1;i<=n;i++) {
    result = result + i;
  }
  cout << result;
  return 0;
}

아 result까지 unsigned short에 넣어뒀다가 계속 틀려서 뭐가 잘못된지 한참을 고민했다...

 

 

4. 영수증 (문제번호 25304)

#include <iostream>
using namespace std;

int main() {
  unsigned int a, X, countOfA = 0;
  unsigned short b, i, N;
  cin >> X;
  cin >> N;
  for(i=0;i<N;i++) {
    cin >> a;
    cin >> b;
    countOfA += a * b;
  }
  if(X == countOfA) {
    cout << "Yes";
  } else {
    cout << "No";
  }

  return 0;
}

5. 코딩은 체육과목 입니다 (문제번호 25314)

#include <iostream>
using namespace std;

int main() {
  unsigned short N, i=0, j=0;
  cin >> N;
  i = N / 4 + 1;
  for(j=1;j<i;j++) {
    cout << "long ";
  }
  cout << "int" << endl;
  return 0;
}

6. 빠른  A+B (문제번호 15552)

#include <iostream>
using namespace std;
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int i, T;
    unsigned short A, B;
    cin >> T;

    for(i=0;i<T;i++) {
        cin >> A;
        cin >> B;
        cout << A+B << "\n";
    }
    
    return 0;
}

https://jaimemin.tistory.com/1521

 

ios_base::sync_with_stdio(false); cin.tie(null); 구문을 추가해주는 이유

C++로 알고리즘을 풀 때 실행 속도를 높이기 위해 흔히 아래와 같은 구문을 작성해줍니다. ios_base::sync_with_stdio(false); cin.tie(null); 저 같은 경우 단순히 시간초과가 발생했을 때 남들이 위 코드를 작

jaimemin.tistory.com

이 블로그에서 관련 구문에 대한 설명을 야무지게 해놔서 문제 풀면서 도움이 많이 되었다.

 

 

7. A+B - 7 (문제번호 11021)

#include <iostream>
using namespace std;
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    unsigned int i, T;
    unsigned short A, B;
    cin >> T;

    for(i=1;i<=T;i++) {
        cin >> A;
        cin >> B;
        cout <<"Case #" << i << ": " << A+B << "\n";
    }
    
    return 0;
}

8. A+B - 8 (문제번호 11022)

#include <iostream>
using namespace std;
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    unsigned int i, T;
    unsigned short A, B;
    cin >> T;

    for(i=1;i<=T;i++) {
        cin >> A;
        cin >> B;
        cout <<"Case #" << i << ": " << A << " + " << B << " = " << A+B << "\n";
    }
    
    return 0;
}

9. 별 찍기 - 1 (문제번호 2438)

#include <iostream>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    unsigned short i, j, N;
    cin >> N;
    for(i=0;i<=N;i++) {
        for(j=0;j<i;j++) {
            cout <<"*";
        }
        cout<<"\n";
    }
    return 0;
}

처음에 위와 같이 풀었다가 출력 형식 오류가 떠서 엥? 뭐가 잘못됐지 하고 고민을 좀 했다. 콘솔창에 공백이 하나 더 추가로 입력되어있었는데, 코드를 보니 처음 for문이 돌아갈때 *이 찍히지 않는 것이 문제였다. j가 i보다 작아야해서 i가 0일때는 그냥 통과해버리는 것이 문제였다.

#include <iostream>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    unsigned short i, j, N;
    cin >> N;
    for(i=0;i<N;i++) {
        for(j=0;j<=i;j++) {
            cout <<"*";
        }
        cout<<"\n";
    }
    return 0;
}

그래서 이런 식으로 코드를 바꿔주었다.

 

 

10. 별 찍기 - 2 (문제번호 2439)

#include <iostream>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    unsigned short i, j, N;
    cin >> N;
    for(i=1;i<=N;i++) {
      for(j=N-i; j>0; j--) {
        cout << " ";
      }
      for(j=0;j<i;j++) {
        cout << "*";
      }
      cout<<"\n";
    }
    return 0;
}

11. A+B - 5 (문제번호 10952)

#include <iostream>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    unsigned short A=1, B=1;
    while(A!=0||B!=0) {
      cin >> A;
      cin >> B;
      if(A==0&&B==0)
        return 0;
      cout << A+B << "\n";
    }
    return 0;
}

처음에 if문 안넣어줘서 틀렸다.

 

 

 

12. A+B - 4 (문제번호 10951)

#include <iostream>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int a, b;
    
    while(1){
      cin >> a >> b;
      if(cin.eof()) break;
      else cout << a+b << endl;
    }

    return 0;
}

cin입력 후에 바로 cout출력이 진행된다. tie(null) 넣어줬는데도 이러는 거면 버퍼가 while문에서 비워지는 건가? 공부해봐야겠다.