Skip to content

Conversation

@Seol-Munhyeok
Copy link
Collaborator

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

๋‘ ํ ํ•ฉ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๊ธฐ
https://school.programmers.co.kr/learn/courses/30/lessons/118667

โœ”๏ธ ์†Œ์š”๋œ ์‹œ๊ฐ„

30๋ถ„

โœจ ์ˆ˜๋„ ์ฝ”๋“œ

๊ทธ๋ฆฌ๋”” ํ’€์ด

์ž…๋ ฅ์˜ ํฌ๊ธฐ๊ฐ€ 300,000์ด๋ฏ€๋กœ ๋ชจ๋“  pop() ์—ฐ์‚ฐ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด๋‹ค๊ฐ€ ๊ฒฐ๊ตญ pop() ์—ฐ์‚ฐ์€ ๋‘ ํ ์ค‘ ํ•ฉ์ด ๋” ํฐ ํ์—์„œ ํ•ด์•ผํ•œ๋‹ค๋Š” ์ ์„ ๋– ์˜ฌ๋ž์Šต๋‹ˆ๋‹ค.
๊ทธ ํ›„ ์‚ด์ง ๋…ผ๋ฆฌ์  ๋น„์•ฝ์ด ์žˆ์ง€๋งŒ ๊ทธ๋ƒฅ ๋งค๋ฒˆ ํ•ฉ์ด ๋” ํฐ ํ์—์„œ pop()์„ ๋ฐ˜๋ณตํ•˜๊ณ , ๊ทธ ๋•Œ ํ์˜ ํ•ฉ์ด ๊ฐ™์•„์ง€๋Š” ์ˆœ๊ฐ„์ด ์ตœ์ ์ธ ๊ฑฐ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.
์ด ๋…ผ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฌธ์ œ์— ๋‚˜์˜จ ์˜ˆ์‹œ๋ฅผ ๋Œ€์ž…ํ•ด๋ณด๋‹ˆ๊นŒ ๋งž๋Š” ๊ฑฐ ๊ฐ™์•„์„œ ๊ทธ๋ ‡๊ฒŒ ํ’€์–ด๋ดค์Šต๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ๊ณ ๋ คํ•  ์ ์€ ์—ฐ์‚ฐ์„ ๋ช‡ ๋ฒˆํ•ด์•ผ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์„๊นŒ์˜€์Šต๋‹ˆ๋‹ค.
ํ์˜ ๊ธธ์ด๋ฅผ n์ด๋ผ ํ•  ๋•Œ, pop() ์—ฐ์‚ฐ์„ 4n๋ฒˆ ํ•˜๋ฉด ์–ด๋А ํ•œ ํ๋Š” pop์„ 2n๋ฒˆ ์ด์ƒํ–ˆ๋‹ค๋Š” ๊ฑฐ๊ณ  ๊ทธ ์ˆœ๊ฐ„ ์›๋ž˜์˜ ์ƒํƒœ๋ฅผ ์ง€๋‚˜์ณค์„ํ…Œ๋‹ˆ pop์„ 4n๋ฒˆ ํ•œ ํ›„์—๋„ ํ•ฉ์ด ๊ฐ™์•„์ง€์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ถˆ๊ฐ€๋Šฅ์ด๋ผ๊ณ  ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์ฆ๋ช…์€ ์นด์นด์˜ค ๊ณต์‹ ํ•ด์„ค์—์„œ ๋ฐœ์ทŒํ–ˆ์Šต๋‹ˆ๋‹ค.


๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ queue1๊ณผ queue2์˜ ์›์†Œ ํ•ฉ์„ ๊ฐ™๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ ์ฃผ์–ด์ง„ queue1์˜ ํ•ฉ์„ L, queue2์˜ ํ•ฉ์„ R์ด๋ผ๊ณ  ํ–ˆ์„ ๋•Œ, L๊ณผ R์„ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํƒ์š•๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • L > R์ด๋ผ๋ฉด, queue1์˜ ์›์†Œ๋ฅผ queue2๋กœ ๋„˜๊ฒจ์ค๋‹ˆ๋‹ค.
  • L < R์ด๋ผ๋ฉด, queue2์˜ ์›์†Œ๋ฅผ queue1๋กœ ๋„˜๊ฒจ์ค๋‹ˆ๋‹ค.

์œ„ ๋ฐฉ๋ฒ•์ด ์™œ ์œ ํšจํ•œ์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฆ๋ช…ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์•ž์—์„œ ์„ค๋ช…ํ•œ ๋ฐฉ์‹๊ณผ ๋ฐ˜๋Œ€๋กœ L > R์ธ ์ƒํ™ฉ์—์„œ ๋จผ์ € L์„ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  R์„ ๊ฐ์†Œ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ด ์ตœ์ ์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ L = R์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ธ์  ๊ฐ€ L์„ ๊ฐ์†Œ์‹œํ‚ค๊ณ  R์„ ์ฆ๊ฐ€์‹œ์ผœ์•ผ ํ•˜๊ณ , ๊ฒฐ๊ตญ queue1์˜ ์›์†Œ๋ฅผ queue2๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๋™์ž‘์€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. queue2์˜ ์›์†Œ๋ฅผ queue1์œผ๋กœ ๋„˜๊ฒจ์ค€ ์ดํ›„์— queue1์˜ ์›์†Œ๋ฅผ queue2๋กœ ๋„˜๊ฒจ์ฃผ๋“ , ์ด ์ˆœ์„œ๋ฅผ ๋ฐ˜๋Œ€๋กœ ํ•˜๋“  ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—, L > R์ธ ์ƒํ™ฉ์—์„œ L์„ ๊ฐ์†Œ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์€ ํ•ญ์ƒ ์ตœ์ ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๋”” ์ฝ”๋“œ

from collections import deque

def solution(queue1, queue2):
    q1, q2 = deque(queue1), deque(queue2)
    sum1, sum2 = sum(q1), sum(q2)

    if (sum1 + sum2) % 2 == 1:
        return -1
    
    n = len(q1)
    for i in range(4*n+1):
        if sum1 > sum2:
            value = q1.popleft()
            q2.append(value)
            sum1 -= value
            sum2 += value
        elif sum1 < sum2:
            value = q2.popleft()
            q1.append(value)
            sum2 -= value
            sum1 += value
        else:
            return i
        
    return -1
  • ์ง์ ‘ ํ(Queue) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœํžˆ ๋ฐฐ์—ด์„ ํ๋กœ ์‚ฌ์šฉํ•˜๋ฉด 0๋ฒˆ ์›์†Œ๋ฅผ ์ง€์šฐ๋Š” ๊ณผ์ •์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‘ ํ์˜ ์›์†Œ์˜ ํ•ฉ์ด ํ™€์ˆ˜๋ฉด ์ ˆ๋Œ€๋กœ ๋‘ ํ์˜ ํ•ฉ์„ ๊ฐ™๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฏธ๋ฆฌ ์ „์ฒ˜๋ฆฌํ•ด์„œ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • pop() ์—ฐ์‚ฐ ํ›„, ๋‘ ํ์˜ ํ•ฉ์„ ๊ฐฑ์‹ ํ•  ๋•Œ, for๋ฌธ ์•ˆ์— sum1, sum2 = sum(q1), sum(q2) ๋กœ ๋งค๋ฒˆ ๊ณ„์‚ฐํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํ•ฉ๊ณ„๋ฅผ ๊ฐฑ์‹ ํ•ด์•ผ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค.

ํˆฌ ํฌ์ธํ„ฐ ํ’€์ด

์ด ๋ฌธ์ œ๋Š” ํˆฌ ํฌ์ธํ„ฐ๋กœ๋„ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ญ”๊ฐ€ ํ’€์ด๊ฐ€ ํ•œ ๋ฒˆ์— ์ดํ•ดํ•˜๊ธฐ ์‰ฝ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

๋จผ์ € queue1์„ ์™ผ์ชฝ, queue2๋ฅผ ์˜ค๋ฅธ์ชฝ์— ์ด์–ด ๋ถ™์ด๊ณ  ํ•˜๋‚˜์˜ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ๋ณธ๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๋ด…์‹œ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ฐ ํ์— pop ๋˜๋Š” insert ์—ฐ์‚ฐ์„ ํ•˜๋Š” ๊ฒƒ์€ ๋ฐฐ์—ด์˜ ๊ฒฝ๊ณ„๋ฅผ ์ด๋™์‹œํ‚ค๊ฑฐ๋‚˜ ๋งจ ์•ž์˜ ์›์†Œ๋ฅผ ๋งจ ๋’ค์— ์ด๋™์‹œํ‚ค๋Š” ์—ฐ์‚ฐ์„ ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ฐ ํ๋Š” ์ด๋ ‡๊ฒŒ ์ •์˜ํ•œ ๋ฐฐ์—ด์—์„œ ์—ฐ์†๋œ ๊ตฌ๊ฐ„์˜ ์›์†Œ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image image (๊ทธ๋ฆผ ์ถœ์ฒ˜ : https://blog.encrypted.gg/1076)

์ฆ‰ ๋‘ ํ๋ฅผ ์ด์–ด ๋ถ™์ด๊ณ  ๋งจ ๋ ์›์†Œ๋Š” ๋งจ ์•ž ์›์†Œ๋ž‘ ์—ฐ์†ํ•œ ๊ฑฐ๋กœ ์ƒ๊ฐํ•˜๊ณ , ๋ชจ๋“  ์‹œ์ž‘์ ์— ๋Œ€ํ•ด ์›์†Œ์˜ ํ•ฉ์ด ์ „์ฒด์˜ ์ ˆ๋ฐ˜์ผ ๋•Œ๋งˆ๋‹ค ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ด์„œ ์ตœ์†Ÿ๊ฐ’์„ ๊ฐฑ์‹ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ œ๊ฐ€ ํˆฌ ํฌ์ธํ„ฐ ํ’€์ด์— ๋Œ€ํ•ด์„œ ์—ฌ๋Ÿฌ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ดค๋Š”๋ฐ, ์ „์ฒด์ ์ธ ๋А๋‚Œ์€ ๊ทธ๋ฆฌ๋”” ์ฝ”๋“œ์™€ ๊ฒฐ์ด ๊ฐ™๋‹ค๊ณ  ๋А๋‚๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๋”” ์ฝ”๋“œ๋Š” ์‹ค์ œ๋กœ queue์— pop๊ณผ insert๋ฅผ ํ•˜๋ฉด์„œ ์‚ดํŽด๋ณด๋Š” ๊ฑฐ๊ณ , ํˆฌ ํฌ์ธํ„ฐ ํ’€์ด๋Š” ๋‘ ํ๋ฅผ ๋ถ™์ด๊ณ  ํฌ์ธํ„ฐ๋ฅผ ์ด๋™ํ•˜๋ฉด์„œ pop๊ณผ insert๋ฅผ ํ–ˆ๋‹ค๊ณ ์น˜๊ณ  ์‚ดํŽด๋ณด๋Š” ๊ฑฐ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

ํ˜น์‹œ ๋‹ค๋ฅธ ๋ถ„๋“ค๋„ ๊ทธ๋ฆฌ๋””๋ง๊ณ  ๋‹ค๋ฅธ ํ’€์ด๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ณต์œ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

๐Ÿ“š ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ๋‚ด์šฉ

๋‘ ํ์—์„œ ๋”ฐ๋กœ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ, ๋‘ ํ๋ฅผ ๋ถ™์—ฌ์„œ ๋ณธ๋‹ค๋Š” ๊ด€์ ์„ ์–ป์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!

@hyeokbini
Copy link
Collaborator

๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋กœ์ง ์ž์ฒด๋Š” ์Šค๋ฌด์Šคํ•˜๊ฒŒ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ, ๋ฌธํ˜๋‹˜์ด ์งš์–ด์ฃผ์‹  ๋ถ€๋ถ„์ธ ๋ฐ˜๋ณต๋ฌธ์„ ๋๋‚ผ ์กฐ๊ฑด์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ• ์ง€์— ๋Œ€ํ•œ ๊ฐˆํ”ผ๋ฅผ ํ•œ๋™์•ˆ ๋ชป ์žก์•˜์—ˆ๋„ค์š”.

๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๋‘ ํ์—์„œ ์›์†Œ๊ฐ€ ๋น ์ง€๊ณ , ๋“ค์–ด๊ฐ€๋Š” ๊ณผ์ •์ด ๋ฐ˜๋ณต๋˜๋‹ค ๋ณด๋ฉด ๊ฒฐ๊ตญ ์›๋ž˜ ์ƒํƒœ๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๊ณ , ์ด ํšŸ์ˆ˜๋Š”

Q1(q1), Q2(q2) -> Q1(q1,q2), Q2() -> N
Q1(q1,q2), Q2() -> Q1(q2), Q2(q1) -> N
Q1(q2), Q2(q1) -> Q1(), Q2(q1,q2) -> N
Q1(), Q2(q1,q2) -> Q1(q1), Q2(q2) -> N

์ด 4N๋ฒˆ๋งŒํผ์˜ ์—ฐ์‚ฐ๋™์•ˆ ํ•ฉ์ด ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ํ•ด๋‹ต์ด ์—†๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  -1์„ returnํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ „์ฒด์ ์ธ ๋กœ์ง์€ ๋ฌธํ˜๋‹˜ ์ฝ”๋“œ์™€ ๋น„์Šทํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ ๋‘ ๋ฒกํ„ฐ ์ „์ฒด ํ•ฉ์„ ๊ตฌํ•ด์ค€ ๋‹ค์Œ ๋ฒกํ„ฐ๋ฅผ ๋ฑ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋„ฃ๊ณ  ์ดํ•ฉ์ด ํฐ ์ชฝ์—์„œ ์ž‘์€ ์ชฝ์œผ๋กœ ์›์†Œ๋ฅผ pop(), push()ํ•ด์ฃผ๋ฉฐ ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ๋А๋‚Œ์œผ๋กœ ํ•ฉ์„ ๊ฐฑ์‹ ํ•ด์„œ ๊ฐ€์žฅ ๋จผ์ € ํ•ฉ์ด ๊ฐ™๊ฒŒ ๋‚˜์˜จ ๊ฒฝ์šฐ์˜ ์นด์šดํŠธ๋ฅผ returnํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

image

์‹ค์ œ๋กœ 2๋ฒˆ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ์ ์–ด๋ณด๋ฉด์„œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•ด๋ณด๋‹ˆ ๋งž๋Š” ๊ฒƒ ๊ฐ™๊ธธ๋ž˜ ์—„๋ฐ€ํ•œ ์ฆ๋ช… ์—†์ด ๋ฐ”๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ง๊ด€์ ์œผ๋กœ ๋‹น์—ฐํžˆ ํ•ฉ์ด ๋” ๋งŽ์€ ์ชฝ์—์„œ ์ž‘์€ ์ชฝ์œผ๋กœ ์›์†Œ๋ฅผ ์˜ฎ๊ฒจ ์ฃผ๋Š” ๋กœ์ง์„ ์จ์•ผ ํ•œ๋‹ค๊ณ ๋Š” ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ์—„๋ฐ€ํ•œ ์ฆ๋ช…์„ ํ•  ์ƒ๊ฐ์€ ๋ชป ํ–ˆ๋Š”๋ฐ ํ’€์ด๋ฅผ ๊ฐ€์ ธ์™€ ์ฃผ์‹  ๋•์— ์—„๋ฐ€ํ•œ ์ฆ๋ช…์„ ์ดํ•ดํ•˜๊ณ  ๊ฐ€๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ฌธ์ œ์—์„  ๋ช…์‹œ์ ์œผ๋กœ ํžŒํŠธ๋ฅผ ์ฃผ๊ณ  ์žˆ์ง€๋งŒ, ์ž…๋ ฅ ๋ฐฐ์—ด ๊ธธ์ด์™€ ์›์†Œ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ•œ๋‹ค๋ฉด ํžŒํŠธ๊ฐ€ ์—†์–ด๋„ long long ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•ด๋ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ๋„ ๋ฆฌ๋งˆ์ธ๋“œํ•˜๊ณ  ๊ฐ‘๋‹ˆ๋‹ค.

์ œ์ถœ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๊ณ ์ƒํ•˜์…จ์–ด์š”! ๐Ÿ˜„

๋‘ ํ ํ•ฉ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๊ธฐ
#include <bits/stdc++.h>

using namespace std;

int solution(vector<int> queue1, vector<int> queue2) {
    int answer = -1;
    deque<int> Q1(queue1.begin(), queue1.end());
    deque<int> Q2(queue2.begin(), queue2.end());
    long long sum1 = 0;
    long long sum2 = 0;
    int limit = queue1.size();
    int count = 0;
    for(int i = 0; i < limit; i++)
    {
        sum1 += queue1[i];
        sum2 += queue2[i];
    }
    while(count <= limit * 4)
    {
        if(sum1 > sum2)
        {
            Q2.push_back(Q1.front());
            sum1 -= Q1.front();
            sum2 += Q1.front();
            Q1.pop_front();
        }
        else if(sum1 < sum2)
        {
            Q1.push_back(Q2.front());
            sum1 += Q2.front();
            sum2 -= Q2.front();
            Q2.pop_front();
        }
        else
        {
            answer = count;
            break;
        }
        count++;
    }
    
    return answer;
}

@mj010504
Copy link
Collaborator

์ €๋„ ์ด์ „์— ํ’€์—ˆ๋˜ ๋ฌธ์ œ์ธ๋ฐ ์›์†Œํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ long ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฆฌ๋งˆ์ธ๋“œ ํ–ˆ๊ณ , ๋ฐ˜๋ณต๋ฌธ์„ ๋๋‚ด๋Š” ์กฐ๊ฑด์„ ํŒŒ์•…ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์žฌ๋ฏธ์žˆ๋Š” ๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ๋„ค์š”. ์ˆ˜๊ณ ํ•˜์…จ์Šต๋‹ˆ๋‹ค!

๋‘ ํ ํ•ฉ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๊ธฐ
#include<bits/stdc++.h>

using namespace std;

int solution(vector<int> a, vector<int> b) {
    int res = 0;
    long long sum1 = 0;
    long long sum2 = 0;
    
    queue<int> q1;
    queue<int> q2;
    for(int i = 0; i < a.size(); i++) {
        sum1 += a[i];
        q1.push(a[i]);
    }
    
     for(int i = 0; i < b.size(); i++) {
        sum2 += b[i];
        q2.push(b[i]);
    }
    
    if((sum1 + sum2) % 2 != 0) return -1;
    
    int n = a.size() * 4;
    
    while(n--) {
        if(sum1 < sum2) {
            int tmp = q2.front();
            q2.pop();
            q1.push(tmp);
            
            sum1 += tmp;
            sum2 -= tmp;
            res++;
        }
        else if(sum1 > sum2) {
             int tmp = q1.front();
            q1.pop();
            q2.push(tmp);
            
            sum1 -= tmp;
            sum2 += tmp;
            res++;
        }
        else {
            return res;
        }
    }
    
    return -1;
}

Copy link
Collaborator

@flydongwoo flydongwoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋‘ ํ์˜ ํ•ฉ์„ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์›ํ˜• ๋ฐฐ์—ด๋กœ ํ•ฉ์ณ ๋‘ ํฌ์ธํ„ฐ๋ฅผ ์›€์ง์ด๋ฉฐ ํ•œ์ชฝ ํ•ฉ์„ ๋ชฉํ‘œ๊ฐ’์— ๋งž์ถ”๋Š” ๊ณผ์ •์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ์ฝ”๋“œ๋กœ ์งœ๋ณด์•˜์Šต๋‹ˆ๋‹ค

๋‘ ํ ํ•ฉ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๊ธฐ
#include <iostream>
#include <vector>
using namespace std;

long long sum_vec(const vector<long long>& v, size_t start, size_t end) {
    long long s = 0;
    for (size_t i = start; i < end; i++) {
        s += v[i];
    }
    return s;
}

int solution(vector<int> queue1, vector<int> queue2) {
    size_t n = queue1.size();
    vector<long long> A(2 * n);
    for (size_t i = 0; i < n; i++) {
        A[i] = queue1[i];
        A[n + i] = queue2[i];
    }

    long long sum1 = 0;
    long long sum2 = 0;

    for (int x : queue1) {
        sum1 += x;
    }
    for (int x : queue2) {
        sum2 += x;
    }

    long long total = sum1 + sum2;
    if (total % 2 != 0) {
        return -1;
    }
    long long target = total / 2;

    size_t l = 0;
    size_t r = n;
    long long curr1 = sum1;
    int cnt = 0;
    int max_ops = 4 * n;

    while (cnt <= max_ops) {
        if (curr1 == target) {
            return cnt;
        }
        if (curr1 > target) {
            curr1 -= A[l];
            l = (l + 1) % (2 * n);
        }
        else {
            curr1 += A[r];
            r = (r + 1) % (2 * n);
        }
        cnt++;
    }

    return -1;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    vector<int> q1 = {3, 2, 7, 2};
    vector<int> q2 = {4, 6, 5, 1};

    int ans = solution(q1, q2);
    cout << ans << "\n";

    return 0;
}

์ˆ˜๊ณ  ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค!

@Seol-Munhyeok Seol-Munhyeok merged commit 020d03b into main Sep 15, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants