[๐Ÿ“š์ด์ฝ”ํ…Œ #2] ๊ทธ๋ฆฌ๋”” & ๊ตฌํ˜„ ๐Ÿ”ฅ

์ตœํ˜ธ๋นˆยท2023๋…„ 4์›” 27์ผ
0
post-thumbnail

์ถœ์ฒ˜ : https://www.youtube.com/watch?v=2zjoKjt97vQ&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=2


๐Ÿ“Œ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜(ํƒ์š•๋ฒ•)

  • ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜(ํƒ์š•๋ฒ•)์€ ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ์ง€๊ธˆ ๋‹น์žฅ ์ข‹์€ ๊ฒƒ๋งŒ ๊ณ ๋ฅด๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์ธ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๋”” ํ•ด๋ฒ•์€ ๊ทธ ์ •๋‹น์„ฑ ๋ถ„์„์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹จ์ˆœํžˆ ๊ฐ€์žฅ ์ข‹์•„ ๋ณด์ด๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์„ ํƒํ•ด๋„ ์ตœ์ ์˜ ํ•ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿค” ๋ฌธ์ œ ์ƒํ™ฉ

  • ๋ฃจํŠธ ๋…ธ๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๊ฑฐ์ณ ๊ฐ€๋Š” ๋…ธ๋“œ ๊ฐ’์˜ ํ•ฉ์„ ์ตœ๋Œ€๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

    Q. ์ตœ์ ์˜ ํ•ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”โ“

    Q. ๋‹จ์ˆœํžˆ ๋งค ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’๋งŒ ๊ณ ๋ฅธ๋‹ค๋ฉดโ“

์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ์—์„œ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ตœ์ ์˜ ํ•ด๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์—†์„ ๋•Œ๊ฐ€ ๋งŽ๋‹ค. ํ•˜์ง€๋งŒ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ์˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ๋Š” ํƒ์š•๋ฒ•์œผ๋กœ ์–ป์€ ํ•ด๊ฐ€ ์ตœ์ ์˜ ํ•ด๊ฐ€ ๋˜๋Š” ์ƒํ™ฉ์—์„œ, ์ด๋ฅผ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ’€๋ฆฌ๋„๋ก ์ถœ์ œ๋œ๋‹ค.


โœ”๏ธ [์‹ค์Šต] ๊ฑฐ์Šค๋ฆ„๋ˆ ๐Ÿ’ต

์ตœ์ ์˜ ํ•ด๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ€์žฅ ํฐ ํ™”ํ ๋‹จ์œ„๋ถ€ํ„ฐ ๋ˆ์„ ๊ฑฐ์Šฌ๋Ÿฌ ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

โœŒ๐Ÿป N์›์„ ๊ฑฐ์Šฌ๋Ÿฌ ์ค˜์•ผ ํ•  ๋•Œ, ๊ฐ€์žฅ ๋จผ์ € 500์›์œผ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์ค„ ์ˆ˜ ์žˆ์„ ๋งŒํผ ๊ฑฐ์Šฌ๋Ÿฌ ์ค๋‹ˆ๋‹ค.
โ˜๐Ÿป ์ดํ›„์— 100์›, 50์›, 10์›์งœ๋ฆฌ ๋™์ „์„ ์ฐจ๋ก€๋Œ€๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์ค„ ์ˆ˜ ์žˆ์„ ๋งŒํผ ๊ฑฐ์Šฌ๋Ÿฌ ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


์–ด๋–ป๊ฒŒ ์ตœ์ ์˜ ํ•ด๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์„๊นŒ?
โœ… ํฐ ๋‹จ์œ„๊ฐ€ ํ•ญ์ƒ ์ž‘์€ ๋‹จ์œ„์˜ ๋ฐฐ์ˆ˜์ด๋ฏ€๋กœ ์ž‘์€ ๋‹จ์œ„์˜ ๋™์ „๋“ค์„ ์ข…ํ•ฉํ•ด ๋‹ค๋ฅธ ํ•ด๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ
๋งŒ์•ฝ, 800์›์„ ๊ฑฐ์Šฌ๋Ÿฌ ์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ ํ™”ํ ๋‹จ์œ„๊ฐ€ 500์›, 400์›, 100์›์ด๋ผ๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” 500์› 1๊ฐœ, 100์› 3๊ฐœ๋ฅผ ๊ฑฐ์Šฌ๋Ÿฌ์ฃผ๊ฒ ์ง€๋งŒ ๊ทธ๋ฆฌ๋””๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 400์›์งœ๋ฆฌ 2๊ฐœ๋ฅผ ์ค˜์•ผํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” 500์›์งœ๋ฆฌ๊ฐ€ 400์›์˜ ๋ฐฐ์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ๋‹ค.


๐Ÿ‘‡๐Ÿป N = 1,260์ผ ๋•Œ์˜ ์˜ˆ์‹œ๋ฅผ ํ™•์ธํ•ด ๋ณด์ž

python

n = 1260
count = 0

# ํฐ ๋‹จ์œ„์˜ ํ™”ํ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ํ™•์ธํ•˜๊ธฐ
coin_types = [500, 100, 50, 10]

for coin in coin_types:
    count += n // coin # ํ•ด๋‹น ํ™”ํ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋™์ „์˜ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ
    n %= coin

print(count)

Java

public class Main {
    public static void main(String[] args) {
        int n = 1260;
        int cnt = 0;
        int[] coinTypes = {500, 100, 50, 10};
	
        for (int i = 0; i < 4; i++) {
            int coin = coinTypes[i];
            cnt += n / coin;
            n %= coin;
        }
        System.out.println(cnt);
    }
}

๐Ÿคฏ ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

โœ… ํ™”ํ์˜ ์ข…๋ฅ˜๊ฐ€ K๋ผ๊ณ  ํ•  ๋•Œ, ์†Œ์Šค์ฝ”๋“œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(K)์ด๋‹ค.
โœ… ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ๊ฑฐ์Šฌ๋Ÿฌ์ค˜์•ผ ํ•˜๋Š” ๊ธˆ์•ก๊ณผ๋Š” ๋ฌด๊ด€ํ•˜๋ฉฐ, ๋™์ „์˜ ์ด ์ข…๋ฅ˜์—๋งŒ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.



โœ”๏ธ [์‹ค์Šต] 1์ด ๋  ๋•Œ๊นŒ์ง€ โ˜๐Ÿป

์ฃผ์–ด์ง„ N์— ๋Œ€ํ•˜์—ฌ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๋‚˜๋ˆ„๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

N์˜ ๊ฐ’์„ ์ค„์ผ ๋•Œ 2 ์ด์ƒ์˜ ์ˆ˜๋กœ ๋‚˜๋ˆ„๋Š” ์ž‘์—…์ด 1์„ ๋นผ๋Š” ์ž‘์—…๋ณด๋‹ค ์ˆ˜๋ฅผ ํ›จ์”ฌ ๋งŽ์ด ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๊ฐ€๋Šฅํ•˜๋ฉด ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๋‚˜๋ˆ„๋Š” ์ž‘์—…์ด ์–ด๋–ป๊ฒŒ ์ตœ์ ์˜ ํ•ด๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์„๊นŒ?
โœ… N์ด ์•„๋ฌด๋ฆฌ ํฐ ์ˆ˜์—ฌ๋„, K๋กœ ๊ณ„์† ๋‚˜๋ˆˆ๋‹ค๋ฉด ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด K๊ฐ€ 2 ์ด์ƒ์ด๊ธฐ๋งŒ ํ•˜๋ฉด, K๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด 1์„ ๋นผ๋Š” ๊ฒƒ๋ณด๋‹ค ํ•ญ์ƒ ๋น ๋ฅด๊ฒŒ N์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ N์€ ํ•ญ์ƒ 1์— ๋„๋‹ฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. (์ตœ์ ์˜ ํ•ด ์„ฑ๋ฆฝ)


python

# N, K๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ›๊ธฐ
n, k = map(int, input().split())

result = 0

while True:
    # N์ด K๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆ˜๊ฐ€ ๋  ๋•Œ๊นŒ์ง€๋งŒ 1์”ฉ ๋นผ๊ธฐ
    # ์ฆ‰ 1์„ ๋ช‡ ๋ฒˆ ๋นผ์•ผํ•  ์ง€ ๊ณ„์‚ฐ
    target = (n // k) * k
    result += (n - target)
    n = target
    # N์ด K๋ณด๋‹ค ์ž‘์„ ๋•Œ (๋” ์ด์ƒ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์„ ๋•Œ) ๋ฐ˜๋ณต๋ฌธ ํƒˆ์ถœ
    if n < k:
        break
    # K๋กœ ๋‚˜๋ˆ„๊ธฐ
    result += 1
    n //= k

# ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚จ์€ ์ˆ˜์— ๋Œ€ํ•˜์—ฌ 1์”ฉ ๋นผ๊ธฐ
result += (n - 1)
print(result)

Java

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // N, K๋ฅผ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ›๊ธฐ
        int n = sc.nextInt();
        int k = sc.nextInt();
        int result = 0;

        while (true) {
            // N์ด K๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆ˜๊ฐ€ ๋  ๋•Œ๊นŒ์ง€๋งŒ 1์”ฉ ๋นผ๊ธฐ
            int target = (n / k) * k;
            result += (n - target);
            n = target;
            // N์ด K๋ณด๋‹ค ์ž‘์„ ๋•Œ (๋” ์ด์ƒ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์„ ๋•Œ) ๋ฐ˜๋ณต๋ฌธ ํƒˆ์ถœ
            if (n < k) break;
            // K๋กœ ๋‚˜๋ˆ„๊ธฐ
            result += 1;
            n /= k;
        }
        // ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚จ์€ ์ˆ˜์— ๋Œ€ํ•˜์—ฌ 1์”ฉ ๋นผ๊ธฐ
        result += (n - 1);
        System.out.println(result);
    }
}



โœ”๏ธ [์‹ค์Šต] ๊ณฑํ•˜๊ธฐ ํ˜น์€ ๋”ํ•˜๊ธฐ โœ–๏ธโž•

๋‘ ์ˆ˜ ์ค‘์—์„œ ํ•˜๋‚˜๋ผ๋„ 1 ์ดํ•˜์ธ ๊ฒฝ์šฐ์—๋Š” ๋”ํ•˜๋ฉฐ, ๋‘ ์ˆ˜๊ฐ€ ๋ชจ๋‘ 2 ์ด์ƒ์ธ ๊ฒฝ์šฐ์—๋Š” ๊ณฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ +๋ณด๋‹ค๋Š” X๊ฐ€ ๋” ๊ฐ’์„ ํฌ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด 5 + 6 = 11์ด๊ณ , 5 x 6 = 30์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋‘ ์ˆ˜ ์ค‘์—์„œ ํ•˜๋‚˜๋ผ๋„ 0 ํ˜น์€ 1์ธ ๊ฒฝ์šฐ, ๊ณฑํ•˜๊ธฐ๋ณด๋‹ค๋Š” ๋”ํ•˜๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.


๊ฐ€๋Šฅํ•˜๋ฉด ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๋‚˜๋ˆ„๋Š” ์ž‘์—…์ด ์–ด๋–ป๊ฒŒ ์ตœ์ ์˜ ํ•ด๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์„๊นŒ?
โœ… N์ด ์•„๋ฌด๋ฆฌ ํฐ ์ˆ˜์—ฌ๋„, K๋กœ ๊ณ„์† ๋‚˜๋ˆˆ๋‹ค๋ฉด ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด K๊ฐ€ 2 ์ด์ƒ์ด๊ธฐ๋งŒ ํ•˜๋ฉด, K๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด 1์„ ๋นผ๋Š” ๊ฒƒ๋ณด๋‹ค ํ•ญ์ƒ ๋น ๋ฅด๊ฒŒ N์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ N์€ ํ•ญ์ƒ 1์— ๋„๋‹ฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. (์ตœ์ ์˜ ํ•ด ์„ฑ๋ฆฝ)


python

data = input()
# ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋Œ€์ž…
result = int(data[0])

for i in range(1, len(data)):
	# ๋‘ ์ˆ˜ ์ค‘์—์„œ ํ•˜๋‚˜๋ผ๋„ '0' ํ˜น์€ '1'์ธ ๊ฒฝ์šฐ, ๊ณฑํ•˜๊ธฐ๋ณด๋‹ค๋Š” ๋”ํ•˜๊ธฐ ์ˆ˜ํ–‰
	num = int(data[i])
	if num <= 1 or result <= 1:
		result += num 
    else:
    	result *= num
print(result)

Java

import java.util.*;

public class Main {
	public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	String str = sc.next();

	//์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€๊ฒฝํ•œ ๊ฐ’์„ ๋Œ€์ž…
	long result = str.charAt(0) - '0';
	for (int i = 1; i < str.length(); i++) {
		// ๋‘ ์ˆ˜ ์ค‘์—์„œ ํ•˜๋‚˜๋ผ๋„ 0' ํ˜น์€ 1'์ธ ๊ฒฝ์šฐ, ๊ณฑํ•˜๊ธฐ๋ณด๋‹ค๋Š” ๋”ํ•˜๊ธฐ ์ˆ˜ํ–‰
		int num = str.charAt(i) - '0';
		if (num <= 1 || result <= 1) {
			result += num;
        }
		else {
			result *= num;
		}
	}
	System.out.println(result);
  }
}



โœ”๏ธ [์‹ค์Šต] ๋ชจํ—˜๊ฐ€ ๊ธธ๋“œ ๐Ÿง๐Ÿปโ€โ™‚๏ธ๐Ÿง๐Ÿป


์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ์ดํ›„์— ๊ณตํฌ๋„๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ๋ชจํ—˜๊ฐ€๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.


python

n = int(input())
data = list(map(int, input().split()))
data.sort()

result = 0 # ์ด ๊ทธ๋ฃน์˜ ์ˆ˜
count = 0 # ํ˜„์žฌ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜

for i in data: # ๊ณตํฌ๋„๋ฅผ ๋‚ฎ์€ ๊ฒƒ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ
    count += 1 # ํ˜„์žฌ ๊ทธ๋ฃน์— ํ•ด๋‹น ๋ชจํ—˜๊ฐ€๋ฅผ ํฌํ•จ์‹œํ‚ค๊ธฐ
    if count >= i: # ํ˜„์žฌ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜๊ฐ€ ํ˜„์žฌ์˜ ๊ณตํฌ๋„ ์ด์ƒ์ด๋ผ๋ฉด, ๊ทธ๋ฃน ๊ฒฐ์„ฑ
        result += 1 # ์ด ๊ทธ๋ฃน์˜ ์ˆ˜ ์ฆ๊ฐ€์‹œํ‚ค๊ธฐ
        count = 0 # ํ˜„์žฌ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜ ์ดˆ๊ธฐํ™”

print(result) # ์ด ๊ทธ๋ฃน์˜ ์ˆ˜ ์ถœ๋ ฅ

Java

import java.util.*;

public class Main {

    public static int n;
    public static ArrayList<Integer> arrayList = new ArrayList<>();

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();

        for (int i = 0; i < n; i++) {
            arrayList.add(sc.nextInt());
        }

        Collections.sort(arrayList);

        int result = 0; // ์ด ๊ทธ๋ฃน์˜ ์ˆ˜
        int count = 0; // ํ˜„์žฌ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜

        for (int i = 0; i < n; i++) { // ๊ณตํฌ๋„๋ฅผ ๋‚ฎ์€ ๊ฒƒ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ
            count += 1; // ํ˜„์žฌ ๊ทธ๋ฃน์— ํ•ด๋‹น ๋ชจํ—˜๊ฐ€๋ฅผ ํฌํ•จ์‹œํ‚ค๊ธฐ
            if (count >= arrayList.get(i)) { // ํ˜„์žฌ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜๊ฐ€ ํ˜„์žฌ์˜ ๊ณตํฌ๋„ ์ด์ƒ์ด๋ผ๋ฉด, ๊ทธ๋ฃน ๊ฒฐ์„ฑ
                result += 1; // ์ด ๊ทธ๋ฃน์˜ ์ˆ˜ ์ฆ๊ฐ€์‹œํ‚ค๊ธฐ
                count = 0; // ํ˜„์žฌ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜ ์ดˆ๊ธฐํ™”
            }
        }
        System.out.println(result);
    }
}




๐Ÿ“Œ ๊ตฌํ˜„ : ์‹œ๋ฎฌ๋ ˆ์ด์…˜๊ณผ ์™„์ „ ํƒ์ƒ‰

  • ๊ตฌํ˜„์ด๋ž€, ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์†Œ์Šค์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.
  • ๊ตฌํ˜„ ์œ ํ˜•์˜ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    1๏ธโƒฃ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ„๋‹จํ•œ๋ฐ ์ฝ”๋“œ๊ฐ€ ์ง€๋‚˜์น  ๋งŒํผ ๊ธธ์–ด์ง€๋Š” ๋ฌธ์ œ
    2๏ธโƒฃ ์‹ค์ˆ˜ ์—ฐ์‚ฐ์„ ๋‹ค๋ฃจ๊ณ , ํŠน์ • ์†Œ์ˆ˜์  ์ž๋ฆฌ๊นŒ์ง€ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ
    3๏ธโƒฃ ๋ฌธ์ž์—ด์„ ํŠน์ •ํ•œ ๊ธฐ์ค€์— ๋”ฐ๋ผ์„œ ๋Š์–ด ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ
    4๏ธโƒฃ ์ ์ ˆํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์•„์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ

์ผ๋ฐ˜์ ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ์˜ 2์ฐจ์› ๊ณต๊ฐ„์€ ํ–‰๋ ฌ(Matrix)์˜ ์˜๋ฏธ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.


์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฐ ์™„์ „ ํƒ์ƒ‰ ๋ฌธ์ œ์—์„œ๋Š” 2์ฐจ์› ๊ณต๊ฐ„์—์„œ์˜ ๋ฐฉํ–ฅ ๋ฒกํ„ฐ๊ฐ€ ์ž์ฃผ ํ™œ์šฉ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ x๋Š” ์„ธ๋กœ์ถ•์„, y๋Š” ๊ฐ€๋กœ์ถ•์„ ์˜๋ฏธํ•œ๋‹ค.



โœ”๏ธ [์‹ค์Šต] ์ƒํ•˜์ขŒ์šฐ ๐Ÿ‘ฃ


python

# N ์ž…๋ ฅ๋ฐ›๊ธฐ
n = int(input())
x, y = 1, 1
plans = input().split()

# L, R, U, D์— ๋”ฐ๋ฅธ ์ด๋™ ๋ฐฉํ–ฅ
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
move_types = ['L', 'R', 'U', 'D']

# ์ด๋™ ๊ณ„ํš์„ ํ•˜๋‚˜์”ฉ ํ™•์ธ
for plan in plans:
    # ์ด๋™ ํ›„ ์ขŒํ‘œ ๊ตฌํ•˜๊ธฐ
    for i in range(len(move_types)):
        if plan == move_types[i]:
            nx = x + dx[i]
            ny = y + dy[i]
    # ๊ณต๊ฐ„์„ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒฝ์šฐ ๋ฌด์‹œ
    if nx < 1 or ny < 1 or nx > n or ny > n:
        continue
    # ์ด๋™ ์ˆ˜ํ–‰
    x, y = nx, ny

print(x, y)

Java

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // N์„ ์ž…๋ ฅ๋ฐ›๊ธฐ
        int n = sc.nextInt();
        sc.nextLine(); // ๋ฒ„ํผ ๋น„์šฐ๊ธฐ
        String[] plans = sc.nextLine().split(" ");
        int x = 1, y = 1;

        // L, R, U, D์— ๋”ฐ๋ฅธ ์ด๋™ ๋ฐฉํ–ฅ 
        int[] dx = {0, 0, -1, 1};
        int[] dy = {-1, 1, 0, 0};
        char[] moveTypes = {'L', 'R', 'U', 'D'};

        // ์ด๋™ ๊ณ„ํš์„ ํ•˜๋‚˜์”ฉ ํ™•์ธ
        for (int i = 0; i < plans.length; i++) {
            char plan = plans[i].charAt(0);
            // ์ด๋™ ํ›„ ์ขŒํ‘œ ๊ตฌํ•˜๊ธฐ 
            int nx = -1, ny = -1;
            for (int j = 0; j < 4; j++) {
                if (plan == moveTypes[j]) {
                    nx = x + dx[j];
                    ny = y + dy[j];
                }
            }
            // ๊ณต๊ฐ„์„ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒฝ์šฐ ๋ฌด์‹œ 
            if (nx < 1 || ny < 1 || nx > n || ny > n) continue;
            // ์ด๋™ ์ˆ˜ํ–‰ 
            x = nx;
            y = ny;
        }
        System.out.println(x + " " + y);
    }
}



โœ”๏ธ [์‹ค์Šต] ์‹œ๊ฐ โฐ


์ด ๋ฌธ์ œ๋Š” ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์‹œ๊ฐ์˜ ๊ฒฝ์šฐ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ชจ๋‘ ์„ธ์„œ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.
(ํŒŒ์ด์ฌ์€ 1์ดˆ์— 2000๋งŒ๋ฒˆ ์ •๋„์˜ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ํ’€๊ธฐ)

  • ํ•˜๋ฃจ๋Š” 86,400(24x60x60)์ดˆ์ด๋ฏ€๋กœ, 00์‹œ 00๋ถ„ 00์ดˆ๋ถ€ํ„ฐ 23์‹œ 59๋ถ„ 59์ดˆ๊นŒ์ง€์˜ ๋ชจ๋“  ๊ฒฝ์šฐ๋Š” 86,400๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋‹จ์ˆœํžˆ ์‹œ๊ฐ์„ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ 3์ด ํ•˜๋‚˜๋ผ๋„ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์œ ํ˜•์„ ์™„์ „ ํƒ์ƒ‰(Brute Forcing) ๋ฌธ์ œ ์œ ํ˜•์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ฒ€์‚ฌํ•ด๋ณด๋Š” ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค.


python

# H๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ
h = int(input())
count = 0

for i in range(h + 1):
    for j in range(60):
        for k in range(60):
            # ๋งค ์‹œ๊ฐ ์•ˆ์— '3'์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด ์นด์šดํŠธ ์ฆ๊ฐ€
            if '3' in str(i) + str(j) + str(k):
                count += 1

print(count)

Java

import java.util.*;

public class Main {

    // ํŠน์ •ํ•œ ์‹œ๊ฐ ์•ˆ์— '3'์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€์˜ ์—ฌ๋ถ€
    public static boolean check(int h, int m, int s) {
        if (h % 10 == 3 || m / 10 == 3 || m % 10 == 3 || s / 10 == 3 || s % 10 == 3)
            return true;
        return false;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // H๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ 
        int h = sc.nextInt();
        int cnt = 0;

        for (int i = 0; i <= h; i++) {
            for (int j = 0; j < 60; j++) {
                for (int k = 0; k < 60; k++) {
                    // ๋งค ์‹œ๊ฐ ์•ˆ์— '3'์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด ์นด์šดํŠธ ์ฆ๊ฐ€
                    if (check(i, j, k)) cnt++;
                }
            }
        }
        System.out.println(cnt);
    }
}



โœ”๏ธ [์‹ค์Šต] ์™•์‹ค์˜ ๋‚˜์ดํŠธ ๐Ÿคด๐Ÿป


์š”๊ตฌ์‚ฌํ•ญ๋Œ€๋กœ ์ถฉ์‹คํžˆ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ
๋‚˜์ดํŠธ์˜ 8๊ฐ€์ง€ ๊ฒฝ๋กœ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ ๊ฐ ์œ„์น˜๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•˜๊ณ , ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ 8๊ฐ€์ง€ ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ๋ฐฉํ–ฅ ๋ฒกํ„ฐ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.


python

# ํ˜„์žฌ ๋‚˜์ดํŠธ์˜ ์œ„์น˜ ์ž…๋ ฅ๋ฐ›๊ธฐ
input_data = input()
row = int(input_data[1])
column = int(ord(input_data[0])) - int(ord('a')) + 1

# ๋‚˜์ดํŠธ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” 8๊ฐ€์ง€ ๋ฐฉํ–ฅ ์ •์˜
steps = [(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)]

# 8๊ฐ€์ง€ ๋ฐฉํ–ฅ์— ๋Œ€ํ•˜์—ฌ ๊ฐ ์œ„์น˜๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธ
result = 0
for step in steps:
    # ์ด๋™ํ•˜๊ณ ์ž ํ•˜๋Š” ์œ„์น˜ ํ™•์ธ
    next_row = row + step[0]
    next_column = column + step[1]
    # ํ•ด๋‹น ์œ„์น˜๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์นด์šดํŠธ ์ฆ๊ฐ€
    if next_row >= 1 and next_row <= 8 and next_column >= 1 and next_column <= 8:
        result += 1

print(result)

Java

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // ํ˜„์žฌ ๋‚˜์ดํŠธ์˜ ์œ„์น˜ ์ž…๋ ฅ๋ฐ›๊ธฐ
        String inputData = sc.nextLine();
        int row = inputData.charAt(1) - '0';
        int column = inputData.charAt(0) - 'a' + 1;

        // ๋‚˜์ดํŠธ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” 8๊ฐ€์ง€ ๋ฐฉํ–ฅ ์ •์˜
        int[] dx = {-2, -1, 1, 2, 2, 1, -1, -2};
        int[] dy = {-1, -2, -2, -1, 1, 2, 2, 1};

        // 8๊ฐ€์ง€ ๋ฐฉํ–ฅ์— ๋Œ€ํ•˜์—ฌ ๊ฐ ์œ„์น˜๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธ
        int result = 0;
        for (int i = 0; i < 8; i++) {
            // ์ด๋™ํ•˜๊ณ ์ž ํ•˜๋Š” ์œ„์น˜ ํ™•์ธ
            int nextRow = row + dx[i];
            int nextColumn = column + dy[i];
            // ํ•ด๋‹น ์œ„์น˜๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์นด์šดํŠธ ์ฆ๊ฐ€
            if (nextRow >= 1 && nextRow <= 8 && nextColumn >= 1 && nextColumn <= 8) {
                result += 1;
            }
        }
        System.out.println(result);
    }
}



โœ”๏ธ [์‹ค์Šต] ๋ฌธ์ž์—ด ์žฌ์ •๋ ฌ ๐Ÿ” 


์š”๊ตฌ์‚ฌํ•ญ๋Œ€๋กœ ์ถฉ์‹คํžˆ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ
๋ฌธ์ž์—ด์ด ์ž…๋ ฅ๋˜์—ˆ์„ ๋•Œ ๋ฌธ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
โœ… ์ˆซ์ž์ธ ๊ฒฝ์šฐ ๋”ฐ๋กœ ํ•ฉ๊ณ„๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
โœ… ์•ŒํŒŒ๋ฒณ์€ ๊ฒฝ์šฐ ๋ณ„๋„์˜ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ๋œ ์•ŒํŒŒ๋ฒณ์„ ์ •๋ ฌํ•ด ์ถœ๋ ฅํ•˜๊ณ , ํ•ฉ๊ณ„๋ฅผ ๋’ค์— ๋ถ™์—ฌ ์ถœ๋ ฅํ•˜๋ฉด ์ •๋‹ต ๐Ÿค—


python

data = input()
result = []
value = 0

# ๋ฌธ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ
for x in data:
    # ์•ŒํŒŒ๋ฒณ์ธ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ์‚ฝ์ž…
    if x.isalpha():
        result.append(x)
    # ์ˆซ์ž๋Š” ๋”ฐ๋กœ ๋”ํ•˜๊ธฐ
    else:
        value += int(x)

# ์•ŒํŒŒ๋ฒณ์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
result.sort()

# ์ˆซ์ž๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋’ค์— ์‚ฝ์ž…
if value != 0:
    result.append(str(value))

# ์ตœ์ข… ๊ฒฐ๊ณผ ์ถœ๋ ฅ(๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ถœ๋ ฅ)
print(''.join(result))

Java

import java.util.*;

public class Main {

    public static String str;
    public static ArrayList<Character> result = new ArrayList<Character>();
    public static int value = 0;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        str = sc.next();

        // ๋ฌธ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ
        for (int i = 0; i < str.length(); i++) {
            // ์•ŒํŒŒ๋ฒณ์ธ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ์‚ฝ์ž…
            if (Character.isLetter(str.charAt(i))) {
                result.add(str.charAt(i));
            }
            // ์ˆซ์ž๋Š” ๋”ฐ๋กœ ๋”ํ•˜๊ธฐ
            else {
                value += str.charAt(i) - '0';
            }
        }

        // ์•ŒํŒŒ๋ฒณ์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
        Collections.sort(result);

        // ์•ŒํŒŒ๋ฒณ์„ ์ฐจ๋ก€๋Œ€๋กœ ์ถœ๋ ฅ
        for (int i = 0; i < result.size(); i++) {
            System.out.print(result.get(i));
        }

        // ์ˆซ์ž๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋’ค์— ์ถœ๋ ฅ
        if (value != 0) System.out.print(value);
        System.out.println();
    }
}
profile
๋ฐฑ์—”๋“œ ๋ณ‘์•„๋ฆฌ ๐Ÿฅ

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