[๋ฌธ์ œํ’€์ด/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์บ ํ•‘ (2017 ์นด์นด์˜ค์ฝ”๋“œ ์˜ˆ์„ )

2025. 10. 24. 23:28ยท์•Œ๊ณ ๋ฆฌ์ฆ˜

 

 

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 

๋ฌธ์ œ

์บ ํ•‘์žฅ์€ ํ…ํŠธ๋ฅผ ์น  ์ˆ˜ ์žˆ๋Š” ๋„“์€ ํ‰์ง€๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ์ด ํ‰์ง€์—๋Š” ์ด๋ฏธ ์บ ํ•‘์žฅ์—์„œ ์„ค์น˜ํ•ด ๋†“์€ n๊ฐœ์˜ ์๊ธฐ๊ฐ€ ๋ฐ•ํ˜€ ์žˆ๋‹ค. ์บ ํ•‘์žฅ ์ด์šฉ ๊ณ ๊ฐ์€ ์ด ์๊ธฐ๋“ค ์ค‘ ํ•œ ์Œ์„ ๊ณจ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋„๋ก ํ…ํŠธ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.

- ํ…ํŠธ๋Š” ์ง์‚ฌ๊ฐํ˜• ํ˜•ํƒœ์—ฌ์•ผ ํ•œ๋‹ค.
- ํ…ํŠธ์˜ ๋„ค ๋ฉด์ด ์ •ํ™•ํ•˜๊ฒŒ ๋™, ์„œ, ๋‚จ, ๋ถ์„ ํ–ฅํ•ด์•ผ ํ•œ๋‹ค.
- ๋Œ€๊ฐ์— ์œ„์น˜ํ•˜๋Š” ํ…ํŠธ์˜ ๋‘ ๊ผญ์ง“์ ์ด ์ •ํ™•ํ•˜๊ฒŒ ์„ ํƒํ•œ ๋‘ ๊ฐœ์˜ ์๊ธฐ์— ์œ„์น˜ํ•ด์•ผ ํ•œ๋‹ค.
- ํ…ํŠธ๊ฐ€ ์ ์œ ํ•˜๋Š” ์ง์‚ฌ๊ฐํ˜• ์˜์—ญ์˜ ๋„“์ด๋Š” 0๋ณด๋‹ค๋Š” ์ปค์•ผ ํ•œ๋‹ค.
- ํ…ํŠธ๊ฐ€ ์ ์œ ํ•˜๋Š” ์ง์‚ฌ๊ฐํ˜• ์˜์—ญ ๋‚ด๋ถ€์— ๋‹ค๋ฅธ ์๊ธฐ๋ฅผ ํฌํ•จํ•˜๋ฉด ์•ˆ ๋œ๋‹ค. (๋‹ค๋ฅธ ์๊ธฐ๊ฐ€ ๊ฒฝ๊ณ„์— ์œ„์น˜ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ํ—ˆ์šฉํ•จ)
- ์บ ํ•‘์žฅ์—์„œ๋Š” ์œ„์™€ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์œ„์น˜๋ผ๋ฉด ์–ด๋””๋“  ๊ณ ๊ฐ์ด ํ…ํŠธ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •ํ™•ํ•œ ํฌ๊ธฐ์˜ ํ…ํŠธ๋ฅผ ๋ชจ๋‘ ๊ตฌ๋น„ํ•˜์—ฌ ๋Œ€์—ฌํ•ด์ค€๋‹ค๊ณ  ํ•œ๋‹ค.


๋‹น์‹ ์€ ์œ„์™€ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํ…ํŠธ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ์๊ธฐ์˜ ์Œ์˜ ๊ฐœ์ˆ˜๋Š” ์ด ๋ช‡ ๊ฐ€์ง€๊ฐ€ ๋ ์ง€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค.
n๊ฐœ์˜ ์๊ธฐ์˜ ์œ„์น˜๊ฐ€ ์ขŒํ‘œ๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์œ„์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์๊ธฐ์˜ ์Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋‹จ, ๋™์„œ ๋ฐฉํ–ฅ์€ x์ถ•, ๋‚จ๋ถ ๋ฐฉํ–ฅ์€ y์ถ•๊ณผ ํ‰ํ–‰ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

์˜ˆ์ œ ์ž…์ถœ๋ ฅ

n data  answer
4 [[0, 0], [1, 1], [0, 2], [2, 0]]  3

 

ํ’€์ด

๋จผ์ € ๋‘ ๊ฐœ์˜ ์๊ธฐ๋ฅผ ๋น„๊ตํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐฉํ–ฅ์„ ์‰ฝ๊ฒŒ ์ •ํ•˜๊ธฐ ์œ„ํ•ด x์ขŒํ‘œ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ ์๊ธฐ๊ฐ€ ์œ„์˜ ํ˜•ํƒœ๋กœ ์ œ๊ณต๋˜์—ˆ๋‹ค๋ฉด ์ •๋ ฌ ํ›„์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

[[1, 0], [3, 2], [2, 1], [0, 1]] // ์ •๋ ฌ ์ „
[[0, 1], [1, 0], [2, 1], [3, 2]] // ์ •๋ ฌ ํ›„

๊ธฐ์ค€(src) ์๊ธฐ ์ˆœํšŒ๋ฅผ i, ํƒ€๊ฒŸ(tgt)์๊ธฐ ์ˆœํšŒ๋ฅผ j์ผ ๋•Œ j๋Š” ์–ธ์ œ๋‚˜ i+1๋ถ€ํ„ฐ size๋งŒํผ ์ˆœํšŒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ธฐ์ค€์๊ธฐ์™€ ๊ฐ™์€ X์ขŒํ‘œ์ด๊ฑฐ๋‚˜ ๊ฐ™์€ Y์ขŒํ‘œ์ธ ๊ฒฝ์šฐ์—๋Š” ์ง์‚ฌ๊ฐํ˜•์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. 

#include <bits/stdc++.h>

using namespace std;
int solution(int n, vector<vector<int>> data) {
    
    // ์ •๋ ฌ(x๊ฐ€ ๊ฐ™์œผ๋ฉด y์ขŒํ‘œ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ)
    sort(data.begin(), data.end(), [](const vector<int>& a, const vector<int>& b){
        if (a[0] == b[0])
            return a[1] < b[1];
        
        return a[0] < b[0];
    });
    

    int answer = 0;
    for (int i = 0; i < n; i++) {
        const int srcX = data[i][0];
        const int srcY = data[i][1];
        
        for (int j = i+1; j < n; j++) {
            const int tgtX = data[j][0];
            const int tgtY = data[j][1];
            int diffX = tgtX - srcX;
            int diffY = tgtY - srcY;
            
            if (diffX == 0 || diffY == 0)
                continue;
                
            ...
            ...

 

์˜ˆ์‹œ ์ด๋ฏธ์ง€์˜ ์๊ธฐ์—์„œ๋Š” C ์๊ธฐ๊ฐ€ A์™€ B๋กœ ๊ตฌ์„ฑ๋œ ํ…ํŠธ์— ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ถ€๋ถ„์„ ๊ฐ์•ˆํ•ด์„œ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ง์‚ฌ๊ฐํ˜•์„ ๊ตฌ์„ฑํ•  ๋•Œ ๋˜ ๋‹ค๋ฅธ ์๊ธฐ๊ฐ€ ์ง์‚ฌ๊ฐํ˜• ํ…ํŠธ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ดํ›„ i์™€ j ์‚ฌ์ด์— ์žˆ๋Š” ์๊ธฐ๋“ค์ด ์ง์‚ฌ๊ฐํ˜• ์•ˆ์— ์œ„์น˜ํ•˜๋Š”์ง€ k(ํ•œ๋ฒˆ ๋” ๋ฐ˜๋ณต)๋ฅผ ํ†ตํ•ด ์ฐพ์Šต๋‹ˆ๋‹ค. i์™€ j ์‚ฌ์ด์˜ k ์๊ธฐ๊ฐ€ ๋œปํ•˜๋Š” ๊ฒƒ์€ ๋งŒ๋“œ๋ ค๋Š” ์ง์‚ฌ๊ฐํ˜• ํ…ํŠธ ๋‚ด ๋˜ ๋‹ค๋ฅธ ์๊ธฐ๊ฐ€ ์žˆ๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ data๋Š” x ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— i์™€ j ์‚ฌ์ด๋งŒ ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํ‚ค ํฌ์ธํŠธ๋Š” k๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ์ง์‚ฌ๊ฐํ˜•์„ ๋˜ ๋‹ค๋ฅธ ๋ฐฐ์—ด์— ์ €์žฅํ•ด์„œ ๋น„๊ตํ•˜๊ธฐ๋„ ํ•˜๋Š”๋ฐ, ์ด๋Š” ์ฝ”๋“œ ๋ณต์žก๋„๋ฅผ ๋„ˆ๋ฌด ๋Š˜๋ฆฌ๊ธฐ๋„ ํ•˜๊ณ  ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง์‚ฌ๊ฐํ˜• ๋‚ด ๋‹ค๋ฅธ ์๊ธฐ ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

 

์ •๋‹ต ์ฝ”๋“œ

#include <bits/stdc++.h>

using namespace std;
int solution(int n, vector<vector<int>> data) {
    
    sort(data.begin(), data.end(), [](const vector<int>& a, const vector<int>& b){
        if (a[0] == b[0])
            return a[1] < b[1];
        
        return a[0] < b[0];
    });
    
    int answer = 0;
    for (int i = 0; i < n; i++) {
        const int srcX = data[i][0];
        const int srcY = data[i][1];
        
        for (int j = i+1; j < n; j++) {
            const int tgtX = data[j][0];
            const int tgtY = data[j][1];
            int diffX = tgtX - srcX;
            int diffY = tgtY - srcY;
            
            if (diffX == 0 || diffY == 0)
                continue;
            
            int minY = min(srcY, tgtY);
            int maxY = max(srcY, tgtY);
            bool flag = true;
            for (int k = i+1; k<j; k++) {
                int x = data[k][0];
                int y = data[k][1];
                
                if (x > srcX && x < tgtX && y > minY && y < maxY) {
                    flag = false;
                    break;
                }
            }
            
            if (flag)
                answer++;
        }
    }
    return answer;
}
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฌธ์ œํ’€์ด/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์„์œ  ์‹œ์ถ”(feat. BFS)  (0) 2025.10.27
[DFS] ์žฌ๊ท€์™€ ์Šคํƒ์œผ๋กœ ๊ฐ€๋ณ๊ฒŒ ๋ฌธ์ œ ํ’€๊ธฐ  (1) 2025.05.16
[์Šคํƒ, ํ] ๋ฐฑํŠธ๋ž˜ํ‚น(์ด์ „ ์ƒํƒœ ๊ธฐ์–ต)์€ ์Šคํƒ์„ ํ™œ์šฉํ•˜์„ธ์š”  (0) 2025.05.11
[์šฐ์„ ์ˆœ์œ„ ํ] ์ตœ์†Ÿ๊ฐ’ or ์ตœ๋Œ“๊ฐ’ ์ฐพ๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜(feat. deque)  (0) 2025.04.13
[๊ธฐ๋ณธ] ํˆฌ ํฌ์ธํ„ฐ  (0) 2025.03.25
'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฌธ์ œํ’€์ด/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์„์œ  ์‹œ์ถ”(feat. BFS)
  • [DFS] ์žฌ๊ท€์™€ ์Šคํƒ์œผ๋กœ ๊ฐ€๋ณ๊ฒŒ ๋ฌธ์ œ ํ’€๊ธฐ
  • [์Šคํƒ, ํ] ๋ฐฑํŠธ๋ž˜ํ‚น(์ด์ „ ์ƒํƒœ ๊ธฐ์–ต)์€ ์Šคํƒ์„ ํ™œ์šฉํ•˜์„ธ์š”
  • [์šฐ์„ ์ˆœ์œ„ ํ] ์ตœ์†Ÿ๊ฐ’ or ์ตœ๋Œ“๊ฐ’ ์ฐพ๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜(feat. deque)
์„œ์•„๋ž‘๐Ÿ˜ƒ
์„œ์•„๋ž‘๐Ÿ˜ƒ
Just Do It๐Ÿ’ช
  • ์„œ์•„๋ž‘๐Ÿ˜ƒ
    G-Stack
    ์„œ์•„๋ž‘๐Ÿ˜ƒ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (144)
      • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (78)
        • C++ ๊ธฐ์ดˆ (28)
        • C++ ์‘์šฉ (18)
        • Python (18)
        • JavaScript & NodeJS (0)
        • Go (12)
        • React & NextJS (2)
        • Java (0)
      • AI (2)
      • ์ปดํ“จํ„ฐ ๊ตฌ์กฐ & ์šด์˜์ฒด์ œ (31)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (12)
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (5)
      • ๋„คํŠธ์›Œํฌ (3)
      • ๋””์ž์ธํŒจํ„ด (5)
      • ์„œ๋น„์Šค & ํˆด (7)
      • ํŠธ๋ Œ๋“œ&์ด์Šˆ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

    • G์Šคํƒ์˜ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    init
    c
    go
    ๋ฉ”๋ชจ๋ฆฌ
    ์ƒ์†
    ๋ฐ˜๋ณต๋ฌธ
    ์žฌ๊ท€
    component
    ํŒŒ์ผ์ž…์ถœ๋ ฅ
    cpu
    c++
    ์ปดํ“จํ„ฐ
    ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ
    Thread
    ๋ฐฐ์—ด
    ํ•˜๋“œ๋””์Šคํฌ
    ํŒจํ‚ค์ง€
    ์Šคํƒ
    ํŒŒ์ด์ฌ
    RAM
    ๋””์ž์ธํŒจํ„ด
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    ๋ณ€์ˆ˜
    ํ•จ์ˆ˜
    STD
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ํฌ์ธํ„ฐ
    ์กฐ๊ฑด๋ฌธ
    pointer
    fork
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.6
์„œ์•„๋ž‘๐Ÿ˜ƒ
[๋ฌธ์ œํ’€์ด/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์บ ํ•‘ (2017 ์นด์นด์˜ค์ฝ”๋“œ ์˜ˆ์„ )
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”