์นด๋“œ2 (silver 4)

N์žฅ์˜ ์นด๋“œ๊ฐ€ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ์นด๋“œ๋Š” ์ฐจ๋ก€๋กœ 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™์–ด ์žˆ์œผ๋ฉฐ, 1๋ฒˆ ์นด๋“œ๊ฐ€ ์ œ์ผ ์œ„์—, N๋ฒˆ ์นด๋“œ๊ฐ€ ์ œ์ผ ์•„๋ž˜์ธ ์ƒํƒœ๋กœ ์ˆœ์„œ๋Œ€๋กœ ์นด๋“œ๊ฐ€ ๋†“์—ฌ ์žˆ๋‹ค.

์ด์ œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋™์ž‘์„ ์นด๋“œ๊ฐ€ ํ•œ ์žฅ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค. ์šฐ์„ , ์ œ์ผ ์œ„์— ์žˆ๋Š” ์นด๋“œ๋ฅผ ๋ฐ”๋‹ฅ์— ๋ฒ„๋ฆฐ๋‹ค. ๊ทธ ๋‹ค์Œ, ์ œ์ผ ์œ„์— ์žˆ๋Š” ์นด๋“œ๋ฅผ ์ œ์ผ ์•„๋ž˜์— ์žˆ๋Š” ์นด๋“œ ๋ฐ‘์œผ๋กœ ์˜ฎ๊ธด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด N=4์ธ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์ž. ์นด๋“œ๋Š” ์ œ์ผ ์œ„์—์„œ๋ถ€ํ„ฐ 1234 ์˜ ์ˆœ์„œ๋กœ ๋†“์—ฌ์žˆ๋‹ค. 1์„ ๋ฒ„๋ฆฌ๋ฉด 234๊ฐ€ ๋‚จ๋Š”๋‹ค. ์—ฌ๊ธฐ์„œ 2๋ฅผ ์ œ์ผ ์•„๋ž˜๋กœ ์˜ฎ๊ธฐ๋ฉด 342๊ฐ€ ๋œ๋‹ค. 3์„ ๋ฒ„๋ฆฌ๋ฉด 42๊ฐ€ ๋˜๊ณ , 4๋ฅผ ๋ฐ‘์œผ๋กœ ์˜ฎ๊ธฐ๋ฉด 24๊ฐ€ ๋œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ 2๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ๋‚˜๋ฉด, ๋‚จ๋Š” ์นด๋“œ๋Š” 4๊ฐ€ ๋œ๋‹ค.

N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ œ์ผ ๋งˆ์ง€๋ง‰์— ๋‚จ๊ฒŒ ๋˜๋Š” ์นด๋“œ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ •์ˆ˜ N(1 ≤ N ≤ 500,000)์ด ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋‚จ๊ฒŒ ๋˜๋Š” ์นด๋“œ์˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

์˜ˆ์ œ ์ž…๋ ฅ 1

6

 

 

์˜ˆ์ œ ์ถœ๋ ฅ 1

4

 

 

 

 

#include <stdio.h>

int main(){
    int size;
    int card[500000] = {};  // ํ
    int front = 0, rear;
        
    scanf("%d", &size);
    
    for (int i = 0; i < size; i++){
        card[i] = i + 1;
    }
    rear = size - 1;  // rear์—๋Š” ํ์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ์˜ ์ธ๋ฑ์Šค ์ €์žฅ
    while (front != rear) {  // front์™€ rear๊ฐ€ ๋‹ค๋ฅธ ๊ฐ’์ผ ๋•Œ ๋ฐ˜๋ณต
        front = (front + 1) % size;    // front๋Š” ๋งจ ์•ž ์›์†Œ ๋ฐ”๋กœ ์•ž ์ธ๋ฑ์Šค ์ €์žฅ
        if (rear == front) break;      // ์›์†Œ๊ฐ€ ํ•˜๋‚˜๋งŒ ๋‚จ์œผ๋ฉด breakํ•˜๊ณ ์ถœ๋ ฅ
        rear = (rear + 1) % size;
        card[rear] = card[front];      // ๊ฐ€์žฅ ์•ž์˜ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ์›์†Œ ๋งจ ๋’ค๋กœ ์ด๋™
        front = (front + 1) % size;
    }
    printf("%d\n", card[rear]);  // ์ธ๋ฑ์Šค front๋กœ ํ•ด๋„ ์ƒ๊ด€์—†์Œ
    return 0;
}

ํ์˜ ํŠน์ง•์„ ์‚ฌ์šฉํ•ด์„œ ์ž‘์„ฑํ•ด์ฃผ์—ˆ๋‹ค.

์นด๋“œ์˜ ๊ฐœ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” size๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  size์— ํ•ด๋‹นํ•˜๋Š” ๋งŒํผ ํ•ด๋‹น ์ธ๋ฑ์Šค์— ์ธ๋ฑ์Šค + 1๋งŒํผ์˜ ๊ฐ’์„ ์ €์žฅํ•ด์ฃผ์—ˆ๋‹ค.

while๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ํ•ญ์ƒ ์ฐธ์ผ ๋•Œ front์—๋Š” ๋งจ ์•ž ์›์†Œ์˜ ๋ฐ”๋กœ ์•ž์˜ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•ด์ฃผ๊ณ  rear์—๋Š” ํ์˜ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•ด์ฃผ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์•ž์˜ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ์›์†Œ๋ฅผ ๋งจ ๋’ค๋กœ ์›€์ง์ด๊ฒŒ ํ–ˆ๊ณ  ์ด ๊ณผ์ •์„ rear๊ณผ front๊ฐ€ ๊ฐ™์ง€ ์•Š์€ ๋™์•ˆ ๋ฐ˜๋ณตํ–ˆ๋‹ค.

rear๊ณผ front๊ฐ€ ๊ฐ™๋‹ค๋ฉด while๋ฌธ์„ ๋น ์ ธ๋‚˜์˜ค๊ณ  ํ•ด๋‹น ์ธ๋ฑ์Šค์˜ ์›์†Œ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋„๋ก ํ•ด์ฃผ์—ˆ๋‹ค.

 

 

 

'๋ฐฑ์ค€ > C' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[C] ๋ฐฑ์ค€ 10828๋ฒˆ  (0) 2022.11.11
[C] ๋ฐฑ์ค€ 1065๋ฒˆ  (0) 2022.11.11
[C] ๋ฐฑ์ค€_ 7568๋ฒˆ  (0) 2022.05.16
[C] ๋ฐฑ์ค€_1929๋ฒˆ  (0) 2022.05.15
[C] ๋ฐฑ์ค€_1676๋ฒˆ  (0) 2022.05.08
๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!