[BOJ] 1253. ์ข‹๋‹ค

bbookngยท2023๋…„ 6์›” 4์ผ
1

BOJ

๋ชฉ๋ก ๋ณด๊ธฐ
1/5

๐Ÿ“Œ 1253. ์ข‹๋‹ค

์ด์ œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€ ๋•Œ ๋งˆ๋‹ค ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ’€์—ˆ๋Š”์ง€ ๊ธฐ๋กํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.
๊ธฐ๋กํ•˜๋ฉด์„œ ํ’€์ด ๋ฐฉ๋ฒ•๋„ ๋‹ค์‹œ ์ •๋ฆฌํ•˜๊ณ , ๊ฐœ๋…๋„ ๋‹ค์ ธ๋ด์•ผ์ง€ ~

์•„๋ฌดํŠผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฒซ ๊ฒŒ์‹œ๋ฌผ์€ ๋‹ค์Œ์ฃผ ์Šคํ„ฐ๋”” ๋ฌธ์ œ์ธ ๋ฐฑ์ค€ 1253๋ฒˆ ์ข‹๋‹ค์ด๋‹ค.


๐Ÿ’ก Gold 4 / 1028ms

๋ฌธ์ œ

N๊ฐœ์˜ ์ˆ˜ ์ค‘์—์„œ ์–ด๋–ค ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ์ˆ˜ ๋‘ ๊ฐœ์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ ์ˆ˜๋ฅผ โ€œ์ข‹๋‹ค(GOOD)โ€๊ณ  ํ•œ๋‹ค.

N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๊ทธ ์ค‘์—์„œ ์ข‹์€ ์ˆ˜์˜ ๊ฐœ์ˆ˜๋Š” ๋ช‡ ๊ฐœ์ธ์ง€ ์ถœ๋ ฅํ•˜๋ผ.

์ˆ˜์˜ ์œ„์น˜๊ฐ€ ๋‹ค๋ฅด๋ฉด ๊ฐ’์ด ๊ฐ™์•„๋„ ๋‹ค๋ฅธ ์ˆ˜์ด๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(1 โ‰ค N โ‰ค 2,000), ๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” i๋ฒˆ์งธ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” Ai๊ฐ€ N๊ฐœ ์ฃผ์–ด์ง„๋‹ค. (|Ai| โ‰ค 1,000,000,000, Ai๋Š” ์ •์ˆ˜)

์ถœ๋ ฅ

์ข‹์€ ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ

10
1 2 3 4 5 6 7 8 9 10

์˜ˆ์ œ ์ถœ๋ ฅ

8

๐Ÿ’ก PS

  • ์šฐ์„  ์ฃผ์–ด์ง„ ์ˆ˜๋“ค ์ค‘ ๋‘ ๊ฐœ์˜ ์ˆ˜์˜ ํ•ฉ์ด ๋˜๋Š” ์ˆ˜๋“ค๋กœ ๊ตฌ์„ฑ๋œ ์ง‘ํ•ฉ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค.
  • ์ž…๋ ฅ๊ฐ’์œผ๋กœ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด๊ณผ, ์œ„์—์„œ ๋งŒ๋“  ์ง‘ํ•ฉ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ชจ๋‘ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.
  • ๊ทธ ๋’ค ์ง‘ํ•ฉ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํ™˜ํ•˜๋ฉฐ ํ•ด๋‹น ๊ฐ’์ด ๋‚˜์˜ค๋Š”์ง€ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆซ์ž ๋ฐฐ์—ด์„ ํˆฌํฌ์ธํ„ฐ๋กœ ํƒ์ƒ‰ํ•œ๋‹ค.
N = int(input())
numbers = sorted(list(map(int, input().split())))
answer = 0

nums = []

for i in range(N):
    for j in range(N):
        if i != j and numbers[i] + numbers[j] in numbers:
            nums.append(numbers[i] + numbers[j])

nums = sorted(nums)

for num in nums:
    left = 0
    right = len(numbers) - 1

    while left != right:
        tmp = numbers[left] + numbers[right]
        if tmp == num:
            answer += 1
            break
        elif tmp < num:
            left += 1
        elif tmp > num:
            right -= 1

print(answer)
  • ์œ„ ์ƒ๊ฐ๋Œ€๋กœ ์ฒ˜์Œ ์ง  ์ฝ”๋“œ์ด๋‹ค.
  • ํ•˜์ง€๋งŒ ์ œ์ถœํ–ˆ๋”๋‹ˆ python์œผ๋กœ๋Š” ์‹œ๊ฐ„์ดˆ๊ณผ, pypy๋กœ๋Š” ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค. ๊ฐ€ ๋–ด๋‹ค.

  • ๋ฌธ์ œ๋Š”, ์ˆ˜๊ฐ€ ์ค‘๋ณต์ด ๋˜๋ฉด ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ.

  • ์˜ˆ๋ฅผ ๋“ค์–ด ์ž…๋ ฅ ๋ฐฐ์—ด์ด 0 0 1 ์ด๋ผ๋ฉด, 0 0 ์ด ๋”ํ•ด์ง€๋ฉด ์ˆœํ™˜ํ•  ๋•Œ 0 0 ์„ ๋นผ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 0 0 ์„ ๋”ํ•˜๋ฉด 0์ด ๋‚˜์˜ค๊ณ  ์œ„์—์„œ ๋งŒ๋“  ์ง‘ํ•ฉ๋ฆฌ์ŠคํŠธ์— ์กด์žฌํ•˜๋ฏ€๋กœ ์ข‹์€ ์ˆ˜๋กœ ์นด์šดํŒ…์ด ๋œ๋‹ค.

  • ์œ„ ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๋‹ค์‹œ ์ฝ”๋“œ๋ฅผ ์งœ๋ณด์•˜๋‹ค.

  • ๋ฏธ๋ฆฌ ์ข‹์€ ์ˆ˜๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ์ง‘ํ•ฉ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋†“์ง€ ์•Š๊ณ , ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ์—์„œ ์ธ๋ฑ์Šค๊ฐ€ ๊ฒน์น˜์ง€ ์•Š๋Š” ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ’€์—ˆ๋‹ค.

  • ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

N = int(input())
numbers = sorted(list(map(int, input().split())))
answer = 0

for i in range(N):
    number = numbers[i]
    left = 0
    right = N - 1

    while left != right:
        tmp = numbers[left] + numbers[right]
        if i != left and i != right and tmp == number:
            answer += 1
            break

        elif tmp <= number:
            left += 1
        elif tmp >= number:
            right -= 1

print(answer)
  • ํ•˜์ง€๋งŒ ๋ชจ๋“  ๋ฐฐ์—ด์˜ ์ˆ˜๊ฐ€ ๊ฐ™์€ ์ˆ˜ ์ผ ๊ฒฝ์šฐ ๋Œ€์†Œ ๋น„๊ต์—์„œ ํฌ์ธํ„ฐ๊ฐ€ ์ด๋™ํ•˜๋Š” ๋ถ€๋ถ„์ด ์ž˜๋ชป ์ž‘๋™ํ•˜๊ฒŒ ๋œ๋‹ค.
  • ๊ทธ๋ž˜์„œ tmp == number ์ธ ๊ฒฝ์šฐ์˜ ์กฐ๊ฑด์„ ๋” ์ถ”๊ฐ€ํ•˜์—ฌ ์ธ๋ฑ์Šค๊ฐ€ ์ด๋™ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค.
N = int(input())
numbers = sorted(list(map(int, input().split())))
answer = 0

for i in range(N):
    number = numbers[i]
    left = 0
    right = N - 1

    while left != right:
        tmp = numbers[left] + numbers[right]
        if tmp == number:
            if i != left and i != right:
                answer += 1
                break
            elif i == left:
                left += 1
            else:
                right -= 1

        elif tmp <= number:
            left += 1
        elif tmp >= number:
            right -= 1

print(answer)


  • ์œ„์™€ ๊ฐ™์ด ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜๋‹ˆ
    ๋“œ๋””์–ด ๋งž์•˜๋‹ค ...!

๐Ÿ“Œ ํšŒ๊ณ 

  • ์ด์ œ ๊ทธ๋ž˜๋„ ๋ฌธ์ œ๋ฅผ ๋ณด๋ฉด ์–ด๋–ค ํ’€์ด๋ฐฉ๋ฒ•์ธ์ง€ ๊ธˆ๋ฐฉ ๋– ์˜ค๋ฅธ๋‹ค ! ๋งŽ์ด ๋ฐœ์ „ํ–ˆ๋‹ค.

  • ํ•˜์ง€๋งŒ ์„ค๊ณ„ ๋‹จ๊ณ„์—์„œ ํ—ˆ์ ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์˜ˆ์ œ๋Š” ๊ธˆ๋ฐฉ ํ†ต๊ณผํ•˜๋Š”๋ฐ ์ •๋‹ต๊นŒ์ง€ ๊ฐ€๋Š”๋ฐ ์‹œ๊ฐ„์ด ๊ฝค ๊ฑธ๋ฆฐ๋‹ค. ์ข€ ๋” ์นจ์ฐฉํ•˜๊ณ  ์น˜๋ฐ€ํ•˜๊ฒŒ ํ•ด๋‹ต์„ ์„ค๊ณ„ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์งœ๋„๋ก ํ•ด๋ด์•ผ๊ฒ ๋‹น.

  • ์‹ธํ”ผ 2ํ•™๊ธฐ ํ•˜๋ฉด์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์ž‘๋…„๋ณด๋‹ค ์†Œํ™€ํ–ˆ๋Š”๋ฐ, ๊ทธ๋ž˜๋„ ์•Œ์ž˜๋”ฑ๊น”์„ผ ์Šคํ„ฐ๋”” ํ•˜๋ฉด์„œ ์นด์นด์˜ค ๊ธฐ์ถœ์„ ๊พธ์ค€ํžˆ ํ‘ผ ๋•๋ถ„์ธ์ง€ ์ž‘๋…„์—๋Š” ์ž˜ ๋ชปํ–ˆ๋˜ ํˆฌํฌ์ธํ„ฐ๊ฐ€ ์ด์ œ๋Š” ์ข€ ์‰ฝ๊ฒŒ ๋А๊ปด์ง„๋‹ค !!!

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2023๋…„ 6์›” 4์ผ

๋•๋ถ„์— ์ž˜ ํ’€ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค~

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ