본문 바로가기

알고리즘

Boj 1193 c++눈물의 노가다

내가 할 수 있는게 노가다 밖에 없어서 미안하다. 빨리 숏코딩 배울게요 

한 11번을 틀린듯. 실버문제를 골드문제보다 더 많이 틀리는;;

중첩 조건문으로 억지인 것을 알면서도 코드를 작성했다. 다른 방법이 있을까?

 

다시 생각해보니 줄의 번지수를 구하고 홀수 줄, 짝수줄을 나누어 생각하는 논리 자체는 맞았다. 하지만 줄의 번지 수를 구한 후 중첩 조건문을 쓸 필요없이 처음부터 홀수인 경우와 짝수인 경우로 나누면 되었다.

#include<iostream>

using namespace std;

int main(){



   int n, line=1, sum=1, a, b;
   cin>>n;

   
   while(n>line){

   n-=line;
   sum++;
   line++;//이때 line은 다음 줄의 분모와 분자의 합-1이 된다.
}
    if(line%2==0){
        cout<<n<<'/'<<line-n+1;
    }
    else{
        cout<<line-n+1<<'/'<<n;
    }



}

코드 최종본. 1/1에 대한 예외처리를 어떻게 할까 고민했는데 while의 조건에서부터 걸러낼 수 있었다.

'알고리즘' 카테고리의 다른 글

Boj 1920 c++ 수 찾기(해시연습)  (0) 2025.05.24
Boj 32201 c++ 눈사람(해시)  (0) 2025.05.24
Boj 11659 c++ 구간 합 구하기 4  (0) 2025.05.22
Boj 2531 c++ 회전초밥  (0) 2025.05.22
Boj 1644 c++ 소수의 연속합  (0) 2025.05.21