민들레(연습장)
[c++] 백준 10단계 풀기 본문
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번 - 삼각형과 세 변
int ma = max({a, b, c});
3개 이상의 값을 비교해서 최대, 최소값을 찾으려면 대괄호로 감싸줘야함
10단계는 전반적으로 쉬웠다
뇌를 말랑말랑하게 만들어주는 문제들의 모음같음
'문제 풀이 > 백준_단계별로 풀어보기' 카테고리의 다른 글
| 😟 [c++] 백준 12단계: 브루트 포스 (1) | 2024.05.29 |
|---|---|
| [파이썬] 백준 10단계 풀기 (0) | 2024.05.15 |
| 백준 74986693 오답 풀이 (0) | 2024.03.15 |
| 백준 74936334 오답 풀이 (1) | 2024.03.14 |
| 백준 74911844번 오답 노트 (0) | 2024.03.13 |