πŸ“¦ Changgo/🏫 First Solve at School

[BOJ B3][C++] λ°±μ€€ 2863번: 이게 λΆ„μˆ˜?

선달 2022. 12. 10. 22:02
λ°˜μ‘ν˜•

https://www.acmicpc.net/problem/2863

 

2863번: 이게 λΆ„μˆ˜?

첫째 쀄에 ν‘œλ₯Ό λͺ‡ 번 λŒλ €μ•Ό ν‘œμ˜ 값이 μ΅œλŒ€κ°€ λ˜λŠ”μ§€ 좜λ ₯ν•œλ‹€. λ§Œμ•½, κ·ΈλŸ¬ν•œ 값이 μ—¬λŸ¬κ°œλΌλ©΄ κ°€μž₯ μž‘μ€ 값을 좜λ ₯ν•œλ‹€.

www.acmicpc.net

 

문제

μƒκ·Όμ΄λŠ” λ§μ…ˆκ³Ό λ‚˜λˆ—μ…ˆμ„ μ—„μ²­λ‚˜κ²Œ λͺ»ν•œλ‹€. 이런 상근이λ₯Ό μœ„ν•΄ μ •μΈμ΄λŠ” μƒκ·Όμ΄μ—κ²Œ λ‹€μŒκ³Ό 같은 문제λ₯Ό λƒˆλ‹€.

μ •μΈμ΄λŠ” μ–‘μ˜ μ •μˆ˜ A,B,C,D둜 이루어진 2*2 ν‘œλ₯Ό κ·Έλ Έλ‹€.

A B
C D

μœ„μ™€ 같은 ν‘œκ°€ μžˆμ„ λ•Œ, ν‘œμ˜ 값은 A/C + B/D 이닀.

μƒκ·Όμ΄λŠ” ν‘œλ₯Ό λͺ‡ 번 돌리면 ν‘œμ˜ 값이 μ΅œλŒ€κ°€ λ˜λŠ”μ§€ κΆκΈˆν•΄μ‘Œλ‹€.

ν‘œλŠ” 90도 μ‹œκ³„λ°©ν–₯으둜 돌릴 수 μžˆλ‹€.

문제 μƒλ‹¨μ˜ ν‘œλ₯Ό 1번 νšŒμ „ μ‹œν‚€λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

C A
D B

2번 νšŒμ „ μ‹œν‚€λ©΄ λ‹€μŒκ³Ό 같이 λœλ‹€.

D C
B A

ν‘œμ— μ“°μ—¬ μžˆλŠ” A,B,C,Dκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, ν‘œλ₯Ό λͺ‡ 번 νšŒμ „μ‹œμΌœμ•Ό ν‘œμ˜ 값이 μ΅œλŒ€κ°€ λ˜λŠ”μ§€ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 쀄에 A와 Bκ°€ 곡백으둜 κ΅¬λΆ„λ˜μ–΄ μ£Όμ–΄μ§„λ‹€. λ‘˜μ§Έ 쀄에 C와 Dκ°€ 곡백으둜 κ΅¬λΆ„λ˜μ–΄ μ£Όμ–΄μ§„λ‹€. λͺ¨λ“  μˆ˜λŠ” 100보닀 μž‘κ±°λ‚˜ 같은 μ–‘μ˜ μ •μˆ˜μ΄λ‹€.

좜λ ₯

첫째 쀄에 ν‘œλ₯Ό λͺ‡ 번 λŒλ €μ•Ό ν‘œμ˜ 값이 μ΅œλŒ€κ°€ λ˜λŠ”μ§€ 좜λ ₯ν•œλ‹€. λ§Œμ•½, κ·ΈλŸ¬ν•œ 값이 μ—¬λŸ¬κ°œλΌλ©΄ κ°€μž₯ μž‘μ€ 값을 좜λ ₯ν•œλ‹€.

 

풀이

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>

using namespace std;

// table
// [0][1]
// [2][3]

int solution (vector<float>&table) {
    pair<int, float> ans;
    
    for(int i=0; i<4; i++) {
        // ν…Œμ΄λΈ” κ°’ 계산
        float value = (table[0]/table[2] + table[1]/table[3]);

        if(ans.second < value)
            ans = {i, value};
        
        // ν…Œμ΄λΈ” 돌리기
        vector<float> tmp = table;
        
        table[1] = tmp[0];
        table[3] = tmp[1];
        table[2] = tmp[3];
        table[0] = tmp[2];
    }
    
    return ans.first;
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

    vector<float> table(4);
    for(int i=0; i<4; i++)
        cin >> table[i];
    
    cout << solution(table);
    
    return 0;
}

/*
 */
λ°˜μ‘ν˜•