본문 바로가기

백준

15885 고장난 시계

문제 어떻게 풀지 고민하다가 딱 느낌이 왔다. 음수면 반대로 가니 더하기가 되고 양수면 느리게 가니 뺄셈이 되는 식..

 

#include <iostream>

int main(){
    int a, b;
    scanf("%d %d", &a, &b);
    
    printf("%d", 2-a/b*2);
    
    return 0;
}

음 그런데 틀렸다; 다시 보니 a가 4고 b가 1이면 4배나 빨라지는데 그러면 값이 커져 음수가 된다. 내 생각에는 절댓값이 1보다 큰 경우 작은 경우 나눠서 생각해야 할 것 같다. 그리고 음수.. 음수면 어떻게 되는지 감이 잘 안 잡힌다. 아무튼 이 생각은 다음으로... 

 


다시 시도한 고장난 시계 문제

 

문제 풀 때 좌뇌 우뇌 쪼개서 좌뇌는 정상시계 돌리고 우뇌는 고장난 시계 돌리고 싶었다 진심..

너무 헷갈려서 12시간 기준으로 몇 번 만나는지 계산한 다음 *2를 하면 될 것 같았다. 그래서 위처럼 규칙을 세워서 아래처럼 코딩했음

 

#include <iostream>
using namespace std;

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    
    if(a > 0){
        printf("%d", 2*(a/b));
    } else {
        printf("%d", 2*(-1*a/b + 1));
    }
    
    return 0;
}

 

또 틀렸다ㅋㅋ


#include <iostream>
using namespace std;

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    
    int tmp = a/b - 1;
    
    if(tmp > 0){
        printf("%d", 2*tmp);
    } else {
        printf("%d", -2*tmp);
    }
    
    return 0;
}

dma.. 

왜 틀렸지 

 

음.. 

위에껀 약간 두루뭉실하게 생각 한 거라 다시 정리해봤다

음.. 

엄.. 음.. 아 이거 맞는 거 같은데

 

그래서 그냥 숫자 아무꺼나 넣어보다가 이상한 부분을 찾았다. 7하고 2를 넣어봤는데 이게 5가 나와야 하는데 내 코드로는 4가 나왔다. 알고보니 몫으로 구하면서 2.5가 2가 됐고 여기에 2를 곱하면 4가 된다. 원래라면 2.5*2라 5가 되어야 함.. ㅋㅋㅠㅠ ㅋㅋ 소숫점.. ㅎㅎ... 

 

암튼,, 이런 경우는 분자, 분모를 따로 계산한 다음에 나눠줘야 정확한 값이 나온다고 한다. 그래서 a/b - 1을 (a-b) / b 이렇게 계산했다. 

 

#include <iostream>
using namespace std;

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    
    if(a-b > 0){
        printf("%d", 2*(a-b)/b);
    } else {
        printf("%d", -2*(a-b)/b);
    }
    
    return 0;
}

ㅋㅋㅋㅋㅋ

어려운 PS의 세계 ,,, 하지만 아직 두 달 밖에 안 된 늅이라 어쩔 수 없다.

'백준' 카테고리의 다른 글

10816 숫자 카드 2  (0) 2019.11.25
10815 숫자 카드  (0) 2019.11.25
1252 이진수 덧셈  (0) 2019.11.23
1790 수 이어 쓰기2 (미완)  (0) 2019.11.20
1059 수2  (0) 2019.11.17