C언어/백준

2581번, 11653번, 1085번, 3009번

twoweeks-within 2024. 11. 20. 16:52

2581번

bool 타입 : return 값이 true false

bool is_prime(int num) {
    if (num < 2) return false;
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) return false;
    }
    return true;
}

a)  1은 x

b) sqrt(36) = 6 , 6 * 6= 36

거듭제곱근이 제곱의 숫자를 넘기 전까지만 확인하면됨 

c) 나머지는 소수이므로 true

 

for문속에

if (min_prime == -1) {

    min_prime = i;

}

 : i 값이 한번 저장 되면 다른 값으로 저장 되지 않음

 

11653번

a) 2 4 6  8 10 은 다 2의 배수라 쭉 2로 나눔

b) 3 부터 소수들은 따로 나눔 ( 거듭제곱근까지)

c) 그러고도 남은 수 ex) 13 은 소수 이므로 그냥 출력

 

1085번

1. x,y 에 있고, (0,0) ~ (w,h) 이므로

2. 왼쪽 경계선 거리 : x

3. 아래쪽 경계선 거리 : y

4. 위쪽 경계선 거리 h-y

5. 오른쪽 경계썬 거리 w-x

 

// x < w - x : w-x 가 x 보다 큰가?

 

3009번

직사각형 : x or y 같은 값이 두개씩 있음

 > 이미 2개가 같다면 다른쪽을 넣음

int fourth_x = (x[0] == x[1]) ? x[2] : (x[0] == x[2] ? x[1] : x[0]);
int fourth_y = (y[0] == y[1]) ? y[2] : (y[0] == y[2] ? y[1] : y[0]);

 

9063번

 int min_x = 10001, max_x = -10001, min_y = 10001, max_y = -10001;

초기값 : min 을 제일 큰 값으로, max 를 제일 작은값으로

 > 값 갱신시 유용

for문

초기값보다 작으면 min갱신, 크면 max 갱신

 

최대값 - 최소값 -> 넓이 구하면됨

 

'C언어 > 백준' 카테고리의 다른 글

2789번, 2231번  (0) 2024.11.23
5073번, 14215번  (0) 2024.11.21
2869번, 5086번, 2501번, 9506번, 1978번  (0) 2024.11.19
1193번  (0) 2024.11.16
2738번, 2566번, 2563번, 2745번  (0) 2024.11.14