๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 7795_๋จน์„ ๊ฒƒ์ธ๊ฐ€ ๋จนํž ๊ฒƒ์ธ๊ฐ€

๋ฟŒ์•ผ._. 2022. 1. 4. 23:59

Silver III

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/7795)

<๋จน์„ ๊ฒƒ์ธ๊ฐ€ ๋จนํž ๊ฒƒ์ธ๊ฐ€>

๋ฌธ์ œ 

 

์‹ฌํ•ด์—๋Š” ๋‘ ์ข…๋ฅ˜์˜ ์ƒ๋ช…์ฒด A์™€ B๊ฐ€ ์กด์žฌํ•œ๋‹ค. A๋Š” B๋ฅผ ๋จน๋Š”๋‹ค. A๋Š” ์ž๊ธฐ๋ณด๋‹ค ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๋จน์ด๋งŒ ๋จน์„ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, A์˜ ํฌ๊ธฐ๊ฐ€ {8, 1, 7, 3, 1}์ด๊ณ , B์˜ ํฌ๊ธฐ๊ฐ€ {3, 6, 1}์ธ ๊ฒฝ์šฐ์— A๊ฐ€ B๋ฅผ ๋จน์„ ์ˆ˜ ์žˆ๋Š” ์Œ์˜ ๊ฐœ์ˆ˜๋Š” 7๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 8-3, 8-6, 8-1, 7-3, 7-6, 7-1, 3-1.

๋‘ ์ƒ๋ช…์ฒด A์™€ B์˜ ํฌ๊ธฐ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, A์˜ ํฌ๊ธฐ๊ฐ€ B๋ณด๋‹ค ํฐ ์Œ์ด ๋ช‡ ๊ฐœ๋‚˜ ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

 

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์—๋Š” A์˜ ์ˆ˜ N๊ณผ B์˜ ์ˆ˜ M์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” A์˜ ํฌ๊ธฐ๊ฐ€ ๋ชจ๋‘ ์ฃผ์–ด์ง€๋ฉฐ, ์…‹์งธ ์ค„์—๋Š” B์˜ ํฌ๊ธฐ๊ฐ€ ๋ชจ๋‘ ์ฃผ์–ด์ง„๋‹ค. ํฌ๊ธฐ๋Š” ์–‘์˜ ์ •์ˆ˜์ด๋‹ค. (1 ≤ N, M ≤ 20,000) 

 

์ถœ๋ ฅ 

 

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค, A๊ฐ€ B๋ณด๋‹ค ํฐ ์Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

   - ์‹œ๊ฐ„ ์ดˆ๊ณผ ์ฝ”๋“œ

import sys

if __name__=='__main__':

    t=int(sys.stdin.readline())

    for i in range(t):
        n,m=map(int, sys.stdin.readline().split())
        a=list(map(int, sys.stdin.readline().split()))
        b=list(map(int, sys.stdin.readline().split()))

        b.sort(reverse=True)

        result=0
        for j in a:
            idx=0
            while True:
                if idx >= m:
                    break
                if j>b[idx]:
                    result+=(m-idx)
                    break
                idx+=1
        print(result)

 

  • B๋งŒ ์ •๋ ฌ ํ›„ A ๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ ํฌ๋ฉด ๊ทธ ์ดํ›„๋กœ๋„ A๊ฐ€ B๋ณด๋‹ค ํฌ๊ธฐ ๋•Œ๋ฌธ์— m-idx๋ฅผ ์ด์šฉํ•˜์—ฌ result ๊ตฌํ•จ

๊ณ„์†ํ•ด์„œ ๋ฐœ์ƒํ•˜๋Š” ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ๊ฒฐ๊ตญ ๊ฒ€์ƒ‰์˜ ํž˜์„ ๋นŒ๋ ธ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์‚ฌ์‹ค ์ด๋ถ„ ํƒ์ƒ‰ ๋ฌธ์ œ์˜€๋‹ค. ํ•˜์ง€๋งŒ ๋‚œ... ์ด๋ฆฌ ๋ณด๊ณ  ์ €๋ฆฌ ๋ด๋„ ์ด๋ถ„ ํƒ์ƒ‰์œผ๋กœ ํ’€์ง€ ์•Š์•˜๋‹ค(?) ์ง€๊ธˆ ์ฝ”๋“œ์—์„œ๋„ ์กฐ๊ธˆ๋งŒ ๋” ํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„ ์ฐพ์•„๋ณธ ๊ฒฐ๊ณผ  A๋„ ์ •๋ ฌ ํ›„ idx๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ์ž…๋ ฅ์ด

A [8, 1, 7, 3, 1]

B [3, 6, 1]

์ด๋ผ๊ณ  ํ•˜์ž. 

 

์œ„์˜ ์‹œ๊ฐ„ ์ดˆ๊ณผ ์ฝ”๋“œ๋Š” 

A [8, 1, 7, 3, 1]

B [6, 3, 1]

B๋งŒ ์ •๋ ฌ๋œ ์ด ์ƒํƒœ์—์„œ A๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ B ๊ฐ’๊ณผ ๋น„๊ตํ•ด ๊ทธ ๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ๋‚˜๋จธ์ง€ ๊ฐ’ ๋ณด๋‹ค๋„ ํด ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— m-idx๋ฅผ result์— ๋”ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ ๊ฒƒ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ์•„๋ž˜์˜ ํ†ต๊ณผํ•œ ์ฝ”๋“œ๋Š”

A [8, 7, 3, 1, 1]

B [6, 3, 1]

์ด์™€ ๊ฐ™์ด A, B๋ฅผ ๋‘˜ ๋‹ค ์ •๋ ฌํ•˜์—ฌ 8>6 ์ด๋ฏ€๋กœ idx=0, result์— 3์„ ๋”ํ•˜๊ณ ,

7>6 ์ด๋ฏ€๋กœ idx=0, result์— 3์„ ๋”ํ•˜๊ณ  

3>1 ์ด๋ฏ€๋กœ idx=2, resut์— 1์„ ๋”ํ•˜๊ณ 

์ด๋Ÿฐ ์‹์œผ๋กœ ์œ„์—์„œ์™€ ๊ฐ™์ด m-idx๋Š” ๋งž์ง€๋งŒ, A๋ฅผ ์ •๋ ฌํ•ด์คŒ์œผ๋กœ์จ idx๋ฅผ ๋‹ค์‹œ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์ ์ด ๋‹ฌ๋ž๋‹ค.

 

- ํ†ต๊ณผํ•œ ์ฝ”๋“œ

import sys

if __name__=='__main__':

    t=int(sys.stdin.readline())

    for i in range(t):
        n,m=map(int, sys.stdin.readline().split())
        a=list(map(int, sys.stdin.readline().split()))
        b=list(map(int, sys.stdin.readline().split()))
        
        #์ •๋ ฌ
        a.sort(reverse=True)
        b.sort(reverse=True)

        result=0
        idx=0
        for j in a: # A list
            while True:
                if idx >= m: # index ์ข…๋ฃŒ ์กฐ๊ฑด
                    break
                if j>b[idx]: # ํฌ๋ฉด -> ๋‚˜๋จธ์ง€ ๊ฐ’๋ณด๋‹ค๋„ ๋‹ค ํผ
                    result+=(m-idx)
                    break
                idx+=1
        print(result)

 

  • A, B ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
  • for๋ฌธ, while๋ฌธ ํ™œ์šฉ
  • ํ•ต์‹ฌ: idx, m-idx

์ƒ๊ฐ๐Ÿค”

 

์•„์ฃผ ์กฐ๊ธˆ์˜ ์ƒ๊ฐ์˜ ์ฐจ์ด๋กœ ๋งž๊ณ  ํ‹€๋ฆฐ ๊ฒƒ์ด ๊ฒฐ์ •๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋Š๋‚€๋‹ค..

์™œ ์ด ์•„์ฃผ ์กฐ๊ธˆ์„ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ• ๊นŒ?!?!?!?!!?

์œ„์— ์„ค๋ช…ํ•œ ๊ฑธ ๋ณด๋ฉด ๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๊ฒƒ์„ ์ตœ๋Œ€ํ•œ ์ž์„ธํžˆ ์ ์œผ๋ ค ํ–ˆ์œผ๋‚˜ ์•„์ฃผ ์ฃผ์ ˆ์ฃผ์ ˆ์ด ๋˜์–ด๋ฒ„๋ฆฐ ๊ฒƒ ๊ฐ™๋‹ค.. ๐Ÿ˜ฅ

 

์ˆ˜๋งŽ์€ ์ œ์ถœ....