민들레(연습장)

[c++] 백준 10단계 풀기 본문

문제 풀이/백준_단계별로 풀어보기

[c++] 백준 10단계 풀기

mindllae 2024. 5. 14. 12:50

2번 - 1085 - 직사각형에서 탈출

★ 최솟값을 찾는 문제 

찍은 점을 기준으로 4개의 길이가 나오는데 그 4개의 길이 중 가장 작은 값을 찾는거다

 

나의 풀이: ? : ; 연산 사용해서 풀기

int x,y,w,h;
    cin>>x>>y>>w>>h;
    int min1, min2, min;

    x>w-x?min1=w-x:min1=x;
    y>h-y?min2=h-y:min2=y;
    min1>min2?min=min2:min=min1;

좋은 풀이: algorithm헤더를 포함시켜 min함수를 이용해서 풀기

이러면 min관련 변수를 선언할 필요도 없고 메모리도 덜쓰고 편하다. 

cout<<min(min(x,w-x), min(y, h-h));

 

 

 

3번 - 3009 - 네 번째 점

중복되어 나오지 않은 점을 찾기

사각형의 꼭짓점들은 동일한 x, y좌표가 두번씩 나온다

예: (0,0) (1,0) (1,1) (0,1) -> x0 두번, x1두번, y0두번, y1두번

즉 세번 입력에서 중복되어 나오지 않은 점을 찾는다

 

대부분 if, else if, else문을 이용해서 풀던데

xor연산을 이용하면 더더 간단하게 코드를 작성할 수 있다. (사실 아직 완벽하게 이해못했다. xor연산은 대부분 2개로만 설명해서...!!)

 

https://velog.io/@ys2920/BOJ-3009

 

[백준/BOJ] 3009번_네번째 점 (C++/Java)

세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.

velog.io

이분 설명을 참고했다. 

 

수학적인 사고는 이래서 필요한가보다

효율적이여야해서...

 

 

 

4번 - 15894 - 수학은 체력문제 입니다

알고리즘은 디게 단순한데...!

★ 간과하기 쉬운 타입에 대한 문제

 

<8> 2

signed char, unsigned char

 

<16> 4

int

 

<32> 8

long

 

<64> 16

long long

 

타입별로 저장할 수 있는 크기가 다르다 ~.~ 명심

 

 

5번 - 9063 - 대지

▼벡터, 동적할당이 하~나~도~ 생각안나. 스스로 공부 쫌 해보시길...

● 나는 배열을 이용해서 풀었다. 알고리즘헤더에 포함된 min_element함수를 이용함. 이때 주소를 줘야한다는걸 잊지않기

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    int n;
    cin>>n;

    int x[n], y[n];

    for(int i=0; i<n; i++){
        cin>>x[i]>>y[i];
    }

    int minx = *min_element( x, x+n );
    int maxx = *max_element(x, x+n);
    int miny = *min_element( y, y+n );
    int maxy = *max_element(y, y+n);

    //cout<<minx<<" "<<maxx<<" "<<miny<<" "<<maxy<<"\n";
    //cout<<maxx-minx<<" "<<maxy-miny<<"\n";
    cout<<(maxx-minx)*(maxy-miny)<<endl;

https://chat.openai.com/share/f4db8843-d5d4-4147-9fe5-7a10b281920c

 

 

7번 - 5073번 - 삼각형과 세 변

https://velog.io/@shasha/C-max-min%EC%9D%98-%EC%9D%B8%EC%9E%90-3%EA%B0%9C-%EC%9D%B4%EC%83%81%EC%9D%BC-%EB%95%8C

int ma = max({a, b, c});

3개 이상의 값을 비교해서 최대, 최소값을 찾으려면 대괄호로 감싸줘야함

 

 


10단계는 전반적으로 쉬웠다

뇌를 말랑말랑하게 만들어주는 문제들의 모음같음