๐ŸŠ ๋จน์„ ๊ฒƒ์ธ๊ฐ€ ๋จนํž ๊ฒƒ์ธ๊ฐ€

๋ฐฑ์ค€ Silver3

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

๋ฌธ์ œ


์‹ฌํ•ด์—๋Š” ๋‘ ์ข…๋ฅ˜์˜ ์ƒ๋ช…์ฒด 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.

img

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

์ž…๋ ฅ


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

์ถœ๋ ฅ


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

์˜ˆ์ œ ์ž…๋ ฅ 1

2
5 3
8 1 7 3 1
3 6 1
3 4
2 13 7
103 11 290 215

์˜ˆ์ œ ์ถœ๋ ฅ 1

7
1

๐Ÿ“– ๊ฐ€์ ธ๋‹ค ์“ฐ๊ธฐ

๋ฌธ์ œ ์ž…๋ ฅ ๊ฐœ์ˆ˜๊ฐ€ 2๋งŒ์ด๋‹ค. ๋ธŒ๋ฃจํŠธ ํฌ์Šค๋กœ ์•ˆ ํ’€๋ฆฐ๋‹ค. ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์จ์•ผ ํ• ์ง€ ๊ฐ์ด ์•ˆ ์™”๋‹ค.

๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ์„ผ์Šค๊ป ํ’€์–ด๋ณด์•˜๋‹ค. ์ผ๋‹จ ์ฝ”๋“œ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ O(n)์œผ๋กœ ๋งž์ถ”๋Š”๋ฐ ์ง‘์ค‘ํ–ˆ๋‹ค.

๐Ÿ“ ๊ณผ์ • ์„ค๊ณ„/๊ด€๋ฆฌ

แ„‚แ…ฉแ„แ…ณแ„‡แ…ฎแ†จ-10

์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ํฌ์‹์ž ๋ฐฐ์—ด๊ณผ ๋จนํžˆ๋Š” ๋ฐฐ์—ด์„ ํ•œ ๋ฐฐ์—ด๋กœ ๋ชฐ์•„ ๋‹ด๋Š”๋‹ค.

์ด ๋•Œ, ํŠœํ”Œ ํ˜•์‹์œผ๋กœ flag๋ฅผ ์ค€๋‹ค.

์ด๋ฅผ ํ…Œ๋ฉด, (1,e)๋Š” ํฌ์‹์ž์ด๋ฉฐ ํฌ๊ธฐ๊ฐ€ 1์ด๋ผ๋Š” ๋œป์ด๊ณ  (6,f)๋Š” ๋จน์ด์ด๋ฉฐ ํฌ๊ธฐ๊ฐ€ 6์ด๋ผ๋Š” ๋œป์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ๋‹ค. ์ผ๋‹จ ํฌ๊ธฐ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋  ๊ฒƒ์ด๋ฉฐ ํฌ๊ธฐ๊ฐ€ ๊ฐ™๋‹ค๋ฉด ํฌ์‹์ž๊ฐ€ ์šฐ์„ ์ˆœ์œ„๋กœ ์ •๋ ฌ๋  ๊ฒƒ์ด๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ•˜์—ฌ ์ „์ฒด ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ํฌ์‹์ž๊ฐ€ ๋‚˜์˜ค๋ฉด ๊ทธ ์•ž์— ์žˆ๋Š” ๋จน์ด๋“ค์„ ๋‹ค ๋จน์–ด์น˜์šธ ๊ฒƒ์ด๊ณ  ๋จน์ด๊ฐ€ ๋‚˜์˜ค๋ฉด ๋จน์ด ๊ฐœ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ์ค€๋‹ค.

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป CODE

import sys
input = sys.stdin.readline

def solution():
    answer = 0
    b_count = 0

    arr.sort()

    for i in range(len(arr)):
        if arr[i][1] == 'e':
            answer += b_count
        if arr[i][1] == 'f':
            b_count += 1
    
    return answer
    

for _ in range(int(input())):
    n,m = map(int,input().split())
    arr = []
    temp = list(map(int,input().split()))
    for i in range(n):
        arr.append((temp[i],'e'))
    temp = list(map(int,input().split()))
    for i in range(m):
        arr.append((temp[i],'f'))
    

    answer = solution()
    print(answer)

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด

๋ฌธ์ œ๋ฅผ ๋‹ค ํ‘ผํ›„, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜๋ฅผ ๋ณด์•˜๋Š”๋ฐ ํˆฌํฌ์ธํ„ฐ์™€ ์ด์ง„ํƒ์ƒ‰์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

2๊ฐœ์˜ ์ •์ˆ˜ ๋ฐฐ์—ด์„ ๋น„๊ตํ•  ๋•Œ ํˆฌํฌ์ธํ„ฐ ํ˜น์€ ์ด์ง„ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜๋ฉด ๋”์šฑ ๋น ๋ฅธ ์‹œ๊ฐ„์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊นจ๋‹ฌ์•˜๋‹ค.

bisect library

Python์—์„œ๋Š” โ€œ์ •๋ ฌ๋œ ๋ฐฐ์—ดโ€์—์„œ ํŠน์ •ํ•œ ์›์†Œ๋ฅผ ์ฐพ์„ ๋•Œ ์•„์ฃผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค.

๋ฐ”๋กœ bisect ํ•จ์ˆ˜์ด๋‹ค.

  • bisect_left(a, x) : ์ •๋ ฌ๋œ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฆฌ์ŠคํŠธ a์— ๋ฐ์ดํ„ฐ x๋ฅผ ์‚ฝ์ž…ํ•  ๊ฐ€์žฅ ์™ผ์ชฝ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜

  • bisect_right(a, x) : ์ •๋ ฌ๋œ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฆฌ์ŠคํŠธ a์— ๋ฐ์ดํ„ฐ x๋ฅผ ์‚ฝ์ž…ํ•  ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜

img

import bisect

for _ in range(int(input())):
    N, M = map(int, input().split())
    A = sorted(list(map(int, input().split())))
    B = sorted(list(map(int, input().split())))
    cnt = 0
    for a in A:
        cnt += (bisect.bisect(B, a-1))
    print(cnt)

ยฉ 2022. All rights reserved.

Powered by Hydejack v9.1.6