티스토리 뷰

반응형

42ALGO 디스코드에 질문이 올라왔길래 생각없이 나도 풀어보았다.

처음엔 단순히 ++로 풀었더니 역시나 시간초과였다.

이진 탐색으로 풀라는데 왠지 소금물 문제 같다고 생각하다보니 진짜 소금물 문제였다.

그래서 룰루랄라 수학으로 풀었는데 5번이나 틀렸다.

 

1차/2차 시도

#include <stdio.h>

int main(void) {
  float x = 0;
  float y = 0;
  int f_z;
  int count = 0;

  scanf("%f %f", &x, &y);
  if (!(x > 0 && x <= 1000000000) || !(y >= 0 && y <= x))
  {
    return (0);
  }
  f_z = (y / x) * 100;
  if (f_z >= 99)
  {
    printf("-1");
    return 0;
  }
  f_z++;
  count = (f_z * x - 100 * y) / (100 - f_z) + 1;
  printf("%d", count);
  return 0;
}

여러모로 난리지만 마지막 count를 올림해줘야 된다는 생각에 +1 한 것이 가장 큰 문제라고 생각해서 고쳤다.

 

3차 시도

#include <stdio.h>
#include <math.h>

int main(void) {
  float x = 0;
  float y = 0;
  int f_z;
  long long temp;
  int count = 0;


  scanf("%f %f", &x, &y);
  if (!(x > 0 && x <= 1000000000) || !(y >= 0 && y <= x))
  {
    return (0);
  }
  f_z = (y / x) * 100;
  if (f_z >= 99)
  {
    printf("-1");
    return 0;
  }
  f_z++;
  temp = f_z * (int)x - 100 * (int)y;
  if (temp % (100 - f_z) > 0)
  {
    count = temp / (100 - f_z) + 1;
  }
  else
  {
    count = temp / (100 - f_z);
  }
  printf("%d", count);
  return 0;
}

역시 난리지만 일단 count 반올림을 고쳤고, x에 1,000,000,000 y에 980,000,000을 넣었을 때 결과값이 1,000,000,000이 나오지 않고 999,997,440으로 나오길래 무엇이 문제일까 고민하다가 float 형에서 오류가 난다는 걸 아까 부스트 코스 강의에서 들어서 생각 났었다. 그래서 temp = f_z * (int)x - 100 * (int)y; 이렇게 (int)를 붙여주니 결과가 잘 나왔다. 그런데 이때부터 결과는 계속 잘 나오는데 틀렸다고 나왔다. (ㅠㅠ)

 

6차 시도

#include <stdio.h>
#include <math.h>

int main(void) {
  long int x = 0;
  long int y = 0;
  long int z;
  long int temp;
  long int count = 0;

  scanf("%ld %ld", &x, &y);
  z = (100 * y) / x;
  if (z >= 99)
  {
    printf("-1");
    return 0;
  }
  z++;
  temp = z * x - 100 * y;
  if (temp % (100 - z) > 0)
  {
    count = temp / (100 - z) + 1;
  }
  else
  {
    count = temp / (100 - z);
  }
  printf("%ld", count);
  return 0;
}

도합 7차시도만에 맞았다. int, float, long long들이 난무하는 상태에서 계산을 해주고 형을 바꿔주고 하다보니 틀린것 같다. long int로 통일해주니 편-안

 

그렇게 약 1시간 반만에 풀었다.

그런데...

 

Lev01_002가 내가 풀어야했던 문제집

Lv.2 문제였다...

Lv.2 문제를 푼건 참 뿌듯하지만 이것 때문에 굉장히 힘들게! 주변 사람 괴롭혔는데..하아ㅏㅏㅏ

그래도 코딩 실력 늘었으니 됐지!

 

너무 어이없어서 어디에 말하고 싶은데 말할 곳이 없어서 블로그를 열었다.

창피한 코드지만 이렇게 실력을 키워나가는 거지!?!

 

코린이의 성장일기 계속 쓸 수 있기를^^*

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함