728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ๐Ÿ˜ต‍๐Ÿ’ซ

https://school.programmers.co.kr/learn/courses/30/lessons/68935?language=java

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๋ฌธ์ œ ์„ค๋ช…

์ž์—ฐ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. n์„ 3์ง„๋ฒ• ์ƒ์—์„œ ์•ž๋’ค๋กœ ๋’ค์ง‘์€ ํ›„, ์ด๋ฅผ ๋‹ค์‹œ 10์ง„๋ฒ•์œผ๋กœ ํ‘œํ˜„ํ•œ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก

solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”

 

 

์ œํ•œ์‚ฌํ•ญ

- n์€ 1์ด์ƒ 100,000,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

 

์ž…์ถœ๋ ฅ ์˜ˆ

n result
45 7
125 229

 

๋‚ด ํ’€๐Ÿฆท

 

class Solution {
    public int solution(int n) {
        String sam = Integer.toString(n, 3);
        String reverse_sam = new StringBuilder(sam).reverse().toString();
        int decimal = Integer.parseInt(reverse_sam, 3);

        return decimal;
    }
    
}

 

๋‹ค์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•˜๊ธฐ๋กœ ํ•˜๊ณ  ์ฒ˜์Œ์œผ๋กœ ์œ ๋‚˜๊ฐ€ ๊ณจ๋ผ์ค€ ๋ฌธ์ œ๋ผ ๊ทธ๋Ÿฐ์ง€ ์‰ฌ์šด ๋ฌธ์ œ์˜€๋‹ค!!

์ดํ•ด๋ ฅ์ด ์•ˆ ์ข‹์€๋ฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค๋Š” ์˜ˆ์‹œ๋ฅผ ์„ค๋ช…ํ•ด์ค˜์„œ ์ข€ ๋” ํ’€๊ธฐ ์ข‹์€ ๋“ฏ ํ•˜๋‹ค

10์ง„๋ฒ•์„ 3์ง„๋ฒ• ์œผ๋กœ ๋ฐ”๊พธ๊ณ  3์ง„๋ฒ•์„ ๋’ค์ง‘์–ด์„œ ๋‹ค์‹œ 10์ง„๋ฒ•์œผ๋กœ ๋ฐ”๊พธ์–ด์„œ ๋„์ถœ!!

๋’ค์ง‘๋Š” ๋ฉ”์„œ๋“œ์ธ reverse()๋Š” ํŒŒ์ด์ฌ๊ณผ ๋™์ผํ•˜๊ฒŒ ์žˆ๋‹ค

๊ทธ๋ฆฌ๊ณ  Intger,toString()์œผ๋กœ ๋ฐ”๋กœ ์ง„๋ฒ• ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค!!!

 

 

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

class Solution {
    public int solution(int n) {
        String a = "";

        while(n > 0){
            a = (n % 3) + a;
            n /= 3;
        }
        a = new StringBuilder(a).reverse().toString();


        return Integer.parseInt(a,3);
    }
}

 

๊น”๋”ํ•˜๋‹ค!!

๋ณ€์ˆ˜๋ช…์„ ํ•œ ๋‹จ์–ด๋กœ ํ•˜๋Š”๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ผ๋“ฏ!!

 

์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฐœ๋…๋“ค โœ๏ธ

  • Integer.parseInt(String s) : ๋ฌธ์ž์—ด(s)์„ ์ธ์ž๊ฐ’์œผ๋กœ ๋ฐ›์œผ๋ฉด ํ•ด๋‹น ๊ฐ’์„ 10์ง„์ˆ˜์˜ Integer ํ˜•์œผ๋กœ ๋ณ€ํ™˜
    ex) Integer.parseInt("1004")    // 1004
  • Integer.parseInt(String s, int radix) : ์ˆซ์žํ˜•์˜ ๋ฌธ์ž์—ด์„ ์ฒซ๋ฒˆ์งธ ์ธ์ž๊ฐ’์œผ๋กœ ๋ฐ›๊ณ  ๋ณ€ํ™˜ํ•  ์ง„์ˆ˜๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ์ง„์ˆ˜์— ๋งž์ถฐ์„œ Integer ํ˜•์œผ๋กœ ๋ณ€ํ™˜
    ex) Integer.psrseInt("45", 3)    // 1200
  • Integer.toString() : ์ˆซ์ž๋ฅผ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ˜• ๋ณ€ํ™˜ ๋ฐฉ๋ฒ•!!!
    ex) int num = 123;
          String str1 = Integer.toString(num);  .// ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๊ณ  ๋ฌธ์ž 123์ž„
728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ๐Ÿ˜ต‍๐Ÿ’ซ

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

 

๋‚ด ํ’€๐Ÿฆท

# 1446. ์ง€๋ฆ„๊ธธ
import sys
import heapq
input = sys.stdin.readline
INF = 1e9

n, d = map(int, input().split())
graph = [[] for _ in range(d + 1)]
distance = [INF] * (d + 1)

for i in range(d):
    graph[i].append((i + 1, 1))

# ์ง€๋ฆ„๊ธธ ์žˆ๋Š” ๊ฒฝ์šฐ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ
for _ in range(n):
    s, e, l = map(int, input().split())
    # ๋งˆ์ง€๋ง‰ ๋„์ฐฉ์ง€์ ์ด ์‹ค์ œ ๊ณ ์†๋„๋กœ ๋ณด๋‹ค ๋ฉ€๋ฉด ๋„˜๊ธด๋‹ค
    if e > d:
        continue
    graph[s].append((e, l))

# print(graph)
distance[0] = 0
heap = [[0, 0]]
while heap:
    dist, now = heapq.heappop(heap)

    if dist > distance[now]:
        continue

    for i in graph[now]:
        mn_dist = dist + i[1]
        if mn_dist < distance[i[0]]:
            distance[i[0]] = mn_dist
            heapq.heappush(heap, (mn_dist, i[0]))

print(distance[d])

 

์—ญ์ฃผํ–‰์ด ์•ˆ๋˜๋Š”๋ฐ ๋“ค์–ด์˜ค๊ธฐ๋Š” ์‹ค์ œ ๊ณ ์†๋„๋กœ๋ณด๋‹ค ๋จผ๊ณณ๋„ ๋“ค์–ด์˜ค๊ณ ํ•ด์„œ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ• ์ง€ ๊ณ ๋ฏผ์„ ์˜ค๋ž˜ํ–ˆ๋‹ค... ๊ทธ๋ฆฌ๊ณ  ์ง€๋ฆ„๊ธธ์ด ์žˆ์ง€๋งŒ ๋” ๋ฉ€์–ด์„œ ์ด์šฉ์„ ์•ˆ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผํ• ๊นŒ ๊ณ ๋ฏผ์„ ํ–ˆ๋‹ค...

 

๊ฐ€์žฅ ๋จผ์ € ๋ชจ๋“  ๋‘ ๊ธธ์ด1๋งŒํผ ๊ฐˆ๋•Œ 1์ด ๊ฑธ๋ฆฐ๋‹ค๊ณ  ์ดˆ๊ธฐํ™”ํ•ด์คฌ๊ณ ... ์ง€๋ฆ„๊ธธ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด์„œ ์—ญ์ฃผํ–‰์€ ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋งˆ์ง€๋ง‰ ๊ฐ’์ด ๊ณ ์†๋„๋กœ์˜ ๋์„ ๋„˜์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ๋Š” ๋„ฃ์–ด์ฃผ์ง€ ์•Š์•˜๋‹ค... 

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€๋Š” ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•˜๋ฉด ๋!!! ๐Ÿ˜Š๐Ÿ˜Š๐Ÿ˜Š

 

์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฐœ๋…๋“ค โœ๏ธ

Dijkstra

 

1. ์ž‘๋™์›๋ฆฌ

  • ๊ฐ„์„  : ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ, ๊ฑฐ๋ฆฌ ๋ฐฐ์—ด : ์ดˆ๊ธฐ๊ฐ’ ๋ฌดํ•œ๋Œ€๋กœ ์„ค์ •, ํž™ ์‹œ์ž‘์  ์ถ”๊ฐ€
  • ํž™์—์„œ ํ˜„์žฌ ๋…ธ๋“œ ๋นผ๋ฉด์„œ, ๊ฐ„์„  ํ†ตํ•  ๋•Œ ๋” ๊ฑฐ๋ฆฌ๊ฐ€ ์งง์•„์ง„๋‹ค๋ฉด ๊ฑฐ๋ฆฌ ๊ฐฑ์‹  ๋ฐ ํž™์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค
  • ํž™ : ์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ

 

2. ๊ธฐ๋ณธ ์ฝ”๋“œ

# ๋”์ต์ŠคํŠธ๋ผ ๊ตฌํ˜„ํ•˜๊ธฐ

# k : ์‹œ์ž‘์ 
# dist : ๊ฑฐ๋ฆฌ๋ฐฐ์—ด

dist[k] = 0 
heapq.heappush(heap, (0, K))

while heap:
	w, y = heapq.heappop(heap)
    if w > dist[v] : continue
    for nw, nv in edge[v]:
    	if dist[nv] > dist[v] + nw:
        	dist[nv] = dist[v] + nw
            heapq.heappush(heap, dist[nv], nv))

 

3,  ์•„์ด๋””์–ด

  • ํ•œ์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ ์œผ๋กœ์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ > ๋‹ค์ต์ŠคํŠธ๋ผ ์‚ฌ์šฉ
  • ๋ชจ๋“  ์  ๊ฑฐ๋ฆฌ ์ดˆ๊ธฐ๊ฐ’ ๋ฌดํ•œ๋Œ€๋กœ ์„ค์ •
  • ์‹œ์ž‘์  ๊ฑฐ๋ฆฌ 0 ์„ค์ • ๋ฐ ํž™์— ์ถ”๊ฐ€
  • ํž™์—์„œ ํ•˜๋‚˜์”ฉ ๋นผ๋ฉด์„œ ์ˆ˜ํ–‰ํ•  ๊ฒƒ
  • ํ˜„์žฌ ๊ฑฐ๋ฆฌ๊ฐ€ ์ƒˆ๋กœ์šด ๊ฐ„์„ ์„ ๊ฑฐ์น ๋•Œ๋ณด๋‹ค ํฌ๋‹ค๋ฉด ๊ฐฑ์‹ 
  • ์ƒˆ๋กœ์šด ๊ฑฐ๋ฆฌํž™์— ์ถ”๊ฐ€!!!
728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ๐Ÿ˜ต‍๐Ÿ’ซ

ํ•˜๋‚˜ ์ด์ƒ์˜ ์—ฐ์†๋œ ์†Œ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ž์—ฐ์ˆ˜๋“ค์ด ์žˆ๋‹ค. ๋ช‡๊ฐ€์ง€ ์ž์—ฐ์ˆ˜์˜ ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • 3: 3(ํ•œ ๊ฐ€์ง€)
  • 41 : 2+3+4+7+11+13 = 11+13+17 = 41(์„ธ ๊ฐ€์ง€)
  • 53 : 5+7+11+13+17 = 53(๋‘ ๊ฐ€์ง€)

ํ•˜์ง€๋งŒ ์—ฐ์†๋œ ์†Œ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์—†๋Š” ์ž์—ฐ์ˆ˜๋“ค๋„ ์žˆ๋Š”๋ฐ, 20์ด ๊ทธ ์˜ˆ์ด๋‹ค. 7+13์„ ๊ณ„์‚ฐํ•˜๋ฉด 20์ด ๋˜๊ธฐ๋Š” ํ•˜๋‚˜ 7๊ณผ 13์ด ์—ฐ์†์ด ์•„๋‹ˆ๊ธฐ์— ์ ํ•ฉํ•œ ํ‘œํ˜„์ด ์•„๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•œ ์†Œ์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ํ•œ ๋ฒˆ๋งŒ ๋ง์…ˆ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, 3+5+5+7๊ณผ ๊ฐ™์€ ํ‘œํ˜„๋„ ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค. 

์ž์—ฐ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด ์ž์—ฐ์ˆ˜๋ฅผ ์—ฐ์†๋œ ์†Œ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

๋‚ด ํ’€๐Ÿฆท

# 1644. ์†Œ์ˆ˜์˜ ์—ฐ์†ํ•ฉ

import sys
input = sys.stdin.readline

N = int(input())
prime = []
arr = [True for _ in range(N+1)] 
arr[0] = arr[1] = False
for i in range(2, N+1):
    if arr[i]:
        prime.append(i)
        # i์˜ 2๋ฐฐ ์ด์ƒ ๋ถ€ํ„ฐ๋Š” ๋‹ค false...
        for j in range(2*i, N+1, i):
            arr[j] = False

result = start = end = 0
while end <= len(prime):
    each = sum(prime[start:end])
    if each == N:
        result += 1
        end += 1
    elif each < N:
        end += 1
    else:
        start += 1
print(result)

๊ณจ๋“œ 3 ์š”๋Ÿ‰ํ•˜๊ณ ๋Š” ์—„์ฒญ ์–ด๋ ค์šด ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์ง€๋งŒ ๋น„๊ต์  ๋น ๋ฅธ ์‹œ๊ฐ„์— ์†Œ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ  ๋˜ ํˆฌํฌ์ธํ„ฐ๋ฅผ ์จ์•ผ ํ•˜๊ธฐ ๋•จ๋ฌธ์— ๋‘๊ฐ€์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค... ๊ทธ๋ž˜์„œ ์ด๊ฑฐ์ „์— ํ’€ ๋ฌธ์ œ๋กœ ์†Œ์ˆ˜ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ ์ถ”์ฒœํ•œ๋‹ค!!!!

 

์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฐœ๋…๋“ค โœ๏ธ

  • ์—๋ผํ† ์Šค ํ…Œ๋„ค์Šค์˜ ์ฒด(์†Œ์ˆ˜ ํŒ๋ณ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์†Œ์ˆ˜๋“ค์„ ๋Œ€๋Ÿ‰์œผ๋กœ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค)
// ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ

// ์ฃผ์–ด์ง„ ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋Š” ๊ฐ ์ˆซ์ž์— ๋Œ€ํ•ด ์ดˆ๊ธฐ์—๋Š” ๋ชจ๋‘ True์ธ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค
arr = [True for _ in range(N+1)] 
// 0๊ณผ 1์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ False๋กœ ๊ฐ’์„ ์„ค์ •ํ•œ๋‹ค
arr[0] = arr[1] = False
// 2๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๊ฐ ์ˆซ์ž์— ๋Œ€ํ•ด ์†Œ์ˆ˜์ธ์ง€ ํŒ๋ณ„ํ•œ๋‹ค
for i in range(2, N+1):
	// ํ˜„์žฌ ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜์ธ ๊ฒฝ์šฐ, ํ•ด๋‹น ์ˆซ์ž๋ฅผ ์†Œ์ˆ˜ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜๊ณ ,,,
    // ํ˜„์žฌ ์ˆซ์ž์˜ ๋ฐฐ์ˆ˜๋“ค์„ ๋ชจ๋‘ False๋กœ ์„ค์ •ํ•œ๋‹ค... (์ ์–ด๋„ i๋ฅผ ํฌํ•จํ•˜๋‹ˆ๊นŒ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค)
    if arr[i]:
        prime.append(i)
        # i์˜ 2๋ฐฐ ์ด์ƒ ๋ถ€ํ„ฐ๋Š” ๋‹ค false...
        for j in range(2*i, N+1, i):
            arr[j] = False

 

  • ํˆฌ ํฌ์ธํ„ฐ (๋ฆฌ์ŠคํŠธ์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•  ๋•Œ ๋‘ ๊ฐœ์˜ ์ ์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ex) ํŠน์ •ํ•œ ํ•ฉ์„ ๊ฐ€์ง€๋Š” ๋ถ€๋ถ„ ์—ฐ์† ์ˆ˜์—ด ์ฐพ๊ธฐ )
// ํˆฌ ํฌ์ธํ„ฐ ๊ตฌํ˜„ํ•˜๊ธฐ

// ๋‹ค ๋”ํ–ˆ์„ ๊ฒฝ์šฐ N์ด ๋˜๋Š” ๊ฒฐ๊ณผ์™€ ์‹œ์ž‘, ๋ ์ ์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
result = start = end = 0
// ๋ ํฌ์ธํ„ฐ๊ฐ€ ์†Œ์ˆ˜์˜ ๊ธธ์ด๋ณด๋‹ค ์ž‘์„œ๋‚˜ ๊ฐ™์€ ๋™์•ˆ ์ˆ˜ํ–‰
while end <= len(prime):
	// ํ˜„์žฌ ์‹œ์ž‘๋ถ€ํ„ฐ ๊ธ‘๊ฐ€์ง€์˜ ์†Œ์ˆ˜ ํ•ฉ์„ ๊ณ„์‚ฐ
    each = sum(prime[start:end])
    // ํ•ฉ์ด N๊ณผ ๊ฐ™๋‹ค๋ฉด ๊ฒฐ๊ณผ๋ฅผ 1 ์ฆ๊ฐ€, ๋ ํฌ์ธํ„ฐ ๋˜ํ•œ 1 ์ฆ๊ฐ€
    if each == N:
        result += 1
        end += 1
    // ํ•ฉ์ด N๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ๋ ํฌ์ธํ„ฐ 1 ์ฆ๊ฐ€
    elif each < N:
        end += 1
    // ํ•ฉ์ด N๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์‹œ์ž‘ ํฌ์ธํ„ฐ 1 ์ฆ๊ฐ€
    else:
        start += 1
728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ๐Ÿ˜ต‍๐Ÿ’ซ

๋…์ผ ๋กœ๋˜๋Š” {1, 2,...,49}์—์„œ ์ˆ˜ 6๊ฐœ๋ฅผ ๊ณ ๋ฅธ๋‹ค.

๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์„ ํƒํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ์ „๋žต์€ 49๊ฐ€์ง€ ์ˆ˜ ์ค‘ k(k>6)๊ฐœ์˜ ์ˆ˜๋ฅผ ๊ณจ๋ผ ์ง‘ํ•ฉ S๋ฅผ ๋งŒ๋“  ๋‹ค์Œ ๊ทธ ์ˆ˜๋งŒ ๊ฐ€์ง€๊ณ  ๋ฒˆํ˜ธ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, k=8, S={1, 2, 3, 5, 8, 13, 21, 34}์ธ ๊ฒฝ์šฐ ์ด ์ง‘ํ•ฉ S์—์„œ ์ˆ˜๋ฅผ ๊ณ ๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ์ด 28๊ฐ€์ง€์ด๋‹ค.

{[1, 2, 3, 5, 8, 13], [1, 2, 3, 5, 8, 21], [1,2,3,5,8,34], ..., [3,5,8,13,21,34])

์ง‘ํ•ฉ S์™€ k๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ˆ˜๋ฅผ ๊ณ ๋ฅด๋Š” ๋ชจ๋“  ๋ฐฉ๋ฒ•์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจใ…‡์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ž…๋ ฅ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ์ด๋ฃจ์–ด์ ธ ์ด์‹ฟ. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค, ์ฒซ ๋ฒˆ์งธ ์ˆ˜๋Š” k(6 < k < 13)์ด๊ณ , ๋‹ค์Œ k๊ฐœ ์ˆ˜๋Š” ์ง‘ํ•ฉ S์— ํฌํ•จ๋˜๋Š” ์ˆ˜์ด๋‹ค. S์˜ ์›์†Œ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

์ž…๋ ฅ์˜ ๋งˆ์ง€๋ง‰ ์ค„์—๋Š” 0์ด ํ•˜๋‚˜ ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ์ˆ˜๋ฅผ ๊ณ ๋ฅด๋Š” ๋ชจ๋“  ๋ฐฉ๋ฒ•์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ด๋•Œ, ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์‚ฌ์ด์—๋Š” ๋นˆ ์ค„์„ ํ•˜๋‚˜ ์ถœ๋ ฅํ•œ๋‹ค.

 

๋‚ด ํ’€๐Ÿฆท

# 6603. ๋กœ๋˜
def backtracking(depth, beginwith):
    if depth == 6:
        print(*result)
        return

    for i in range(beginwith, k):
        if not visited[i]:
            result[depth] = nums[i]
            backtracking(depth+1, i+1)
            visited[i] = False


while True:
    lotto = list(map(int, input().split()))
    k = lotto[0]
    nums = lotto[1:]
    result = [0] * 6
    visited = [False] * k
    backtracking(0, 0) // ๊นŠ์ด, ์–ด๋””์„œ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ• ๊ฑด์ง€

    if k == 0:
        quit()
    print()

 

N๊ณผ M์œผ๋กœ ๋‹ค์ง„ ๋ฐฑํŠธ๋ž˜ํ‚น ๊ฐœ๋…์„ ๋‹ค๋ฅธ ๋ฌธ์ œ์—๋„ ์ ์šฉ์‹œํ‚ค๊ณ  ์‹ถ์–ด์„œ ๋กœ๋˜๋ผ๋Š” ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค!!!!

์–ด๋ ค์› ๋˜ ์ ....

1. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ํ•œ์ค„ ๋›ฐ์šฐ๋Š”๊ฑธ ์–ด๋–ป๊ฒŒ ํ•˜์ง€....

2. ๋งˆ์ง€๋ง‰ 0์ด ๋‚˜์™”์„ ๋•Œ ์ข…๋ฃŒ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•˜์ง€...

3. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜๊ฐ€ ์•ˆ์ฃผ์–ด์กŒ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ํ•˜์ง€...

 

 

๋ฐฑํŠธ๋ž˜ํ‚น ๊ฐœ๋…์ ์ธ๋ถ€๋ถ„ ๋ณด๋‹ค๋Š” ๋‹ค๋ฅธ๊ฒƒ๋“ค์— ๋” ์‹œ๊ฐ„์„ ๋งŽ์ด ์žก์•„๋จน์—ˆ๋‹ค....

์ˆœ,์กฐ์— ๋Œ€ํ•œ ๊ฐœ๋…์€ ๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡

https://jeniffer0812techstory.tistory.com/94

 

์ˆœ์—ด๊ณผ ์กฐํ•ฉ๐Ÿ’ช

์œ ํŠœ๋ฒ„ ๋”ฉ์ฝ”๋”ฉ์”จ ๋ณด๊ณ  ์ •๋ฆฌํ•ด๋ณด๋Š” ์ˆœ์—ด๊ณผ ์กฐํ•ฉ... ์žฌ๊ท€, ๋ฐฑํŠธ๋ž˜ํ‚น, dfs... ๋“ฑ๋“ฑ ์ •๋ง ๋งŽ์ด ์—ฐ๊ด€๋˜์–ด์žˆ์–ด์„œ ์ •๋ฆฌํ•˜๋ฉด ์ข‹์„๊ฒƒ ๊ฐ™์•„ ์˜ฌ๋ ค๋ด…๋‹ˆ๋‹ค... ##### permutation(์ˆœ์—ด) ''' ์ˆœ์—ด : permutation(ํฌํ•จ๋˜์–ด ์žˆ

jeniffer0812techstory.tistory.com

 

 

์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฐœ๋…๋“ค โœ๏ธ

  • exit() : ํ”„๋กœ๊ทธ๋žจ ๊ฐ•์ œ ์ข…๋ฃŒ
for i in range(100):
    if i == 5:
        quit()
    print(i)
    
/* 
0
1
2
3
4
*/
728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ๐Ÿ˜ต‍๐Ÿ’ซ

์ˆ˜๋นˆ์ด๋Š” ๋™์ƒ๊ณผ ์ˆจ๋ฐ”๊ผญ์งˆ์„ ํ•˜๊ณ ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ํ˜„์žฌ ์ N์— ์žˆ๊ณ  ๋™์ƒ์€ ์  K์— ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ๊ฑท๊ฑฐ๋‚˜ ์ˆœ๊ฐ„์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ, ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ X์ผ ๋•Œ ๊ฑท๋Š”๋‹ค๋ฉด 1์ดˆ ํ›„์— X-1 ๋˜๋Š” X+1๋กœ ์ด๋™ํ•˜๊ฒŒ ๋œ๋‹ค, ์ˆœ๊ฐ„์ด๋™์„ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” 1์ดˆ ํ›„์— 2 * X์˜ ์œ„์น˜๋กœ ์ด๋™ํ•˜๊ฒŒ ๋œ๋‹ค

 

์ˆ˜๋นˆ์ด์™€ ๋™์ƒ์˜ ์œ„์น˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ˆ˜๋นˆ์ด๊ฐ€ ๋™์ƒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ์‹œ๊ฐ„์ด ๋ช‡ ์ดˆ ํ›„์ธ์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ!

์ฒซ ๋ฒˆ์งธ ์ค„์— ์ˆ˜๋นˆ์ด๊ฐ€ ์žˆ๋Š” ์œ„์น˜ N๊ณผ ๋™์ƒ์ด ์žˆ๋Š” ์œ„์น˜ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. N๊ณผ K๋Š” ์ •์ˆ˜์ด๋‹ค.

 

์ถœ๋ ฅ!

์ˆ˜๋นˆ์ด๊ฐ€ ๋™์ƒ์„ ์ฐพ๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•œ๋‹ค.4

 

๋‚ด ํ’€๐Ÿฆท

# 1697. ์ˆจ๋ฐ”๊ผญ์งˆ
from collections import deque
def bfs(start, depth):
    visited = [0] * 100001
    q = deque()
    q.append((start, depth))
    visited[start] = 1
    while q:
        s, d = q.popleft()

        if s == K:
            return d

        for nxt_s in [s-1, s+1, s*2]:
            if 0 <= nxt_s <= 100000 and (not visited[nxt_s] or visited[nxt_s] > d+1):
                q.append((nxt_s, d+1))
                visited[nxt_s] = d+1

N, K = map(int, input().split())
visited = [0] * K
result = dfs(N, 0)
print(result)

 

 ์ฒ˜์Œ์— ๋„๋Œ€์ฒด๊ฐ€ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•ด์•ผํ• ์ง€๋„ ๋ชจ๋ฅด๊ฒ ๊ณ  dp๋‚˜ while๋ฌธ์œผ๋กœ ํ’€์–ด์•ผ๊ฒ ๋‹ค ์‹ถ์—ˆ๋Š”๋ฐ ์•Œ๊ณ ๋ณด๋‹ˆ bfs ๋ฌธ์ œ์˜€๋‹คใ…œใ…œ

์‹œ์ž‘์ ๊ณผ ๊นŠ์ด๋ฅผ ๋„ฃ์–ด์„œ ์‹œ์ž‘์ ์ด ๋์ ๊ณผ ๊ฐ™์•„์ง€๋ฉด return์œผ๋กœ ๊นŠ์ด๋ฅผ ๋ฐ›์•„์ฃผ๋ฉด ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค!!

์–ด๋ ค์› ๋˜ ๋ถ€๋ถ„์€ ๋ฐฉ๋ฌธ ํ–ˆ๋˜ ๊ณณ ๋˜๋Š” ๊นŠ์ด๊ฐ€ ๋” ๊นŠ์€๊ณณ๊ณผ ๊ทธ์ „๊นŒ์ง€์˜ ๊นŠ์ด์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด ๊ฐ™์•˜์„๋•Œ๋Š” ๋ฐฐ์ œํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค... ๋‹ค๋ฅธ ๋ถ„๋“ค ์ฝ”๋“œ๋ฅผ ๋ณด์•˜์„๋•Œ๋Š” ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ๊ณณ์„ continue๋กœ ๋„˜๊ฒจ์„œ ๊ฐ„๋‹จํžˆ ํ•ด๊ฒฐํ•ด ์ฃผ๋Š”๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค...์–ด๋–ป๊ฒŒ ํ’€์–ด์•ผํ• ์ง€๊นŒ์ง€ ๊ณ ๋ฏผํ•œ ๋ฌธ์ œ๋Š” ์˜ค๋žœ๋งŒ์ด๋ผ ๋”์šฑ ํž˜๋“ค์—ˆ๋‹ค ๐Ÿ˜‚๐Ÿ˜‚๐Ÿ˜‚๐Ÿ˜‚

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

์œ ํŠœ๋ฒ„ ๋”ฉ์ฝ”๋”ฉ์”จ ๋ณด๊ณ  ์ •๋ฆฌํ•ด๋ณด๋Š” ์ˆœ์—ด๊ณผ ์กฐํ•ฉ...

์žฌ๊ท€, ๋ฐฑํŠธ๋ž˜ํ‚น, dfs... ๋“ฑ๋“ฑ ์ •๋ง ๋งŽ์ด ์—ฐ๊ด€๋˜์–ด์žˆ์–ด์„œ ์ •๋ฆฌํ•˜๋ฉด ์ข‹์„๊ฒƒ ๊ฐ™์•„ ์˜ฌ๋ ค๋ด…๋‹ˆ๋‹ค...

##### permutation(์ˆœ์—ด)

'''
์ˆœ์—ด : permutation(ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์ˆ˜๊ฐ€ ๊ฐ™์€ ์ˆ˜์—ฌ๋„ ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ๊ฑธ๋กœ ์นœ๋‹ค)
dfs ํŠธ๋ฆฌ์™€ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์‚ฌ์šฉ

3๊ฐœ์˜ ๊ณต ์ค‘์— 2๊ฐœ๋ฅผ ๋ฝ‘๋Š” ๊ฒฝ์šฐ(3P2)
์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ๋„ฃ์œผ๋ฉด ์•ˆ๋˜๋ฏ€๋กœ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž„....
๊นŠ์ด + 1 ํ•œํ›„ ๊ธธ์ด์— ๋งž๋Š” ๊ฐ’์„ ๋ฆฌํ„ด์„ ํ•˜๊ณ ๋‚˜๋ฉด
๋‹ค์‹œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ์— ๋นผ์ค˜์„œ ๋‹ค์‹œ ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค..

1 2
1 3
2 1
2 3
3 1
3 2
6๊ฐ€์ง€
'''

def dfs(L):
    # ์ข…๋ฃŒ ์กฐ๊ฑด
    # ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ€ ์ฐพ์•„์•ผ ํ•  ๊ฐœ์ˆ˜(r)๊ฐ€ ๋œ๋‹ค๋ฉด ์ข…๋ฃŒ
    if L == r:
        print(result)
    else:
        for i in range(len(n)):
            # ์ฒดํฌ๋ฆฌ์ŠคํŠธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด ์—†๋‹ค๋ฉด
            if checklist[i] == 0:
                # result ๋ฆฌ์ŠคํŠธ์— ๊ฐ’์„ ์ถ”๊ฐ€
                result[L] = n[i]
                # ์ฒดํฌ๋ฆฌ์ŠคํŠธ์— ๊ฐ’์ด ์ƒ๊ฒผ๋‹ค๊ณ  ํ‘œ์‹œํ•ด์ฃผ๊ธฐ
                checklist[i] = 1
                # ๋‹ค์Œ ๊นŠ์ด๋กœ ์ด๋™
                dfs(L+1)
                # ๋‹ค์Œ ๋ฒˆ์— ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋นผ์ค€๋‹ค๊ณ  ๊ทธ๋ƒฅ ์ƒ๊ฐํ•˜์…ˆ ^^;;;
                checklist[i] = 0

n = [1, 2, 3]
r = 2
result = [0] * r
checklist = [0] * len(n)
dfs(0)

 

์ดํ•ด๋„ ์ดํ•ด์ง€๋งŒ ์–ด๋Š์ •๋„ ์™ธ์šธ๋งŒํผ์€ ์™ธ์šฐ๋ผ๊ณ  ํ•˜์‹ฌ...

์ดํ•ดํ•ด์•ผ ์™ธ์šฐ์ง€ ์‹ถ๋‹ค๊ฐ€๋„ ์ด๋Ÿฌ๋‹ค๊ฐ€ ์ง„๋„๊ฐ€ ์˜ ์•ˆ๋‚˜๊ฐˆ๊ฑฐ ๊ฐ™์•„์„œ ์ ๋‹นํžˆ ์ดํ•ด์‹œ์ผœ์„œ ์™ธ์šฐ๋Š”๊ฒƒ์ด ์ข‹์„ ๋“ฏ...

 

'''
์กฐํ•ฉ : ๊ฐ™์€ ์ˆซ์ž๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ๊ฐ™์€ ๊ฑธ๋กœ ์ธ์ •....
์ˆœ์—ด๋ณด๋‹ค ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ํ›จ์”ฌ ์ž‘์Œ...
์ˆœ์—ด๋ณด๋‹ค ๋” ๊ฐ„๋‹จ...
ํ•œ๋ฒˆ ์ผ์œผ๋ฉด ๋‹ค์‹œ ์“ฐ์ง€๋ฅผ ์•Š์œผ๋‹ˆ๊นŒ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋„ ํ•„์š”์—†์Œ...
DFS ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ํ‘ผ๋‹ค

3C2

1 2
1 3
2 3

3๊ฐ€์ง€
'''
def dfs(L, BeginWith):
    # ์ข…๋ฃŒ ์กฐ๊ฑด
    if L == r:
        print(*result)
    else:
        for i in range(BeginWith, len(n)): # ์‹œ์ž‘ํ•˜๋Š” ๊ฐ’๋ถ€ํ„ฐ ๋๊นŒ์ง€
            result[L] = n[i] # ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๊ธฐ
            dfs(L+1, i+1) # ๋‹ค์Œ ๊น‰์ด ๋‹ค์Œ ์ˆซ์ž๋กœ ์ด๋™ํ•˜์—ฌ ์ „ ๊ฐ’์„ ๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๋„๋ก


n = [1, 2, 3]
r = 2
result = [0] * r

dfs(0, 0) # level, begin(์–ด๋””์„œ ์‹œ์ž‘ํ• ์ง€)
728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

 

๋ฌธ์ œ ๐Ÿ˜ต‍๐Ÿ’ซ

2์ฐจ์› ํ‰๋ฉด ์œ„์˜ ์  N๊ฐœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ขŒํ‘œ๋ฅผ y์ขŒํ‘œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์œผ๋กœ, y์ขŒํ‘œ๊ฐ€ ๊ฐ™์œผ๋ฉด x์ขŒํ‘œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ •๋ ฌํ•œ ๋‹ค์Œ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ ์˜ ๊ฐœ์ˆ˜ N (1 ≤ N ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” i๋ฒˆ์ ์˜ ์œ„์น˜ xi์™€ yi๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (-100,000 ≤ xi, yi ≤ 100,000) ์ขŒํ‘œ๋Š” ํ•ญ์ƒ ์ •์ˆ˜์ด๊ณ , ์œ„์น˜๊ฐ€ ๊ฐ™์€ ๋‘ ์ ์€ ์—†๋‹ค.

์ถœ๋ ฅ

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

 

ํ‹€๋ฆฐ ๋‚ด ํ’€ ๐Ÿฆท

# 11651. ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ2

N = int(input())
result = []
for _ in range(N):
    x, y = map(int, input().split())
    result.append([x, y])

# for k in result:
#     print(k[-1])

for i in range(N-1):
    if result[i][-1] > result[i+1][-1]:
        result[i], result[i+1] = result[i+1], result[i]
        # print(result)
for i in range(N-1):
    if result[i][-1] > result[i+1][-1]:
        result[i], result[i+1] = result[i+1], result[i]

for s in result:
    print(*s)

์ฒ˜์Œ์—๋Š” ์•ž์—๊ฒƒ๋ถ€ํ„ฐ ๋น„๊ตํ•˜๋ฉด์„œ ์•ž์—๊ฐ’์ด ๋’ค์—๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ๋ฐ”๊ฟ”์ฃผ๋Š” ๋Š๋‚Œ์œผ๋กœ ๋กœ์ง์„ ๊ตฌ์„ฑํ–ˆ๋Š”๋ฐ... for๋ฌธ์„ ๋‘๋ฒˆ ๋Œ๋ฆฌ๋‹ˆ๊นŒ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๋‹ต์€ ๋‚˜์™”๋Š”๋ฐ ์•„๋งˆ ํžˆ๋“ ์ผ€์ด์Šค๋“ค์€ ๋‹ค ๊ฑธ๋ ค์„œ ํŽ˜์ผ์„ ๋ฐ›์•˜๋‹ค...

์•„๋งˆ ๋‹ค๋ฅธ ์• ๋“ค์€ ๋‘๋ฒˆ์œผ๋กœ ์•ˆ๋˜๊ฒ ์ง€..

๊ทธ๋ž˜์„œ ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ํ•˜๋ฉด ์ข‹์„๊นŒ ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด๋‹ค๊ฐ€...

y๊ฐ’์„ ์ฐจ๋ก€๋กœ ์ •๋ ฌํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ ๋จผ์ € ๋ฐ›์•„์„œ ์†ŒํŠธ??

 

๋‚ด ํ’€ ๐Ÿฆท

# 11651. ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ2
import sys
input = sys.stdin.readline
N = int(input())
result = []

# y ๊ฐ’์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ 
for _ in range(N):
    x, y = map(int, input().split())
    result.append([y, x])

result.sort()
# print(result)

for y, x in result:
    print(x, y)

๊ฒฐ๊ณผ๋Š” ์„ฑ๊ณต์ด์—ˆ๋‹ค!!!! ์ƒ๊ฐ๋ณด๋‹ค ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐ ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹

๊ทธ๋Ÿฌ๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ํ’€์ด๋ฅผ ๋ดค๋Š”๋ฐ ์ •๋ง ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋žŒ๋‹ค๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜์…จ๋‹ค...

์ž˜ ๋ชฐ๋ผ์„œ ๋ชป ์“ฐ๊ธฐ๋„ ํ–ˆ์–ด์„œ ์ด๋ฒˆ๊ธฐํšŒ์— ๊ณต๋ถ€ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค ^^

 

์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฐœ๋…๋“ค โœ๏ธ

 

- sorted()์—์„œ key lambda ์‚ฌ์šฉ (์˜ค๋ฆ„์ฐจ์ˆœ์ด ๊ธฐ๋ณธ)

 

  • ๋‹จ์ˆœํžˆ sorted๋งŒ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ
a = [(0, 4), (1, 2), (1, -1), (2, 2), (3, 3)]
b = sorted(a)  # a.sort()์™€ ๋™์ผ
print(b)

# [(0, 4), (1,  -1), (1, 2), (2, 2), (3, 3)]
# ์‚ฌ์‹ค ๊ตณ์ด ๋žŒ๋‹ค๋กœ ์–ด๋ ต๊ฒŒ ์•ˆ ์“ฐ๊ณ ... ๊ฑฐ๊พธ๋กœ ๋ฐ›์•„์„œ ์ •๋ ฌํ•˜๋Š”๊ฒŒ ๋” ์ข‹์€๋“ฏ ^^^^^^^^

 

  • key ์ธ์ž์— ํ•จ์ˆ˜๋ฅผ ๋„˜๊ฒจ์ค€ ๊ฒฝ์šฐ
  1. ์ฒซ๋ฒˆ์งธ ๋“ค์–ด์žˆ๋Š” ๊ฐ’์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ค€ ๊ฒฝ์šฐ
a = [(0, 4), (1, 2), (1, -1), (2, 2), (3, 3)]
c = sorted(a, key = lambda x : x[0])
print(c)

# [(0, 4), (1, -1), (1, 2), (2, 2), (3, 3)]
# ์•ž์˜ ์ธ์ž์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋Š”๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

 

  2. ๋‘๋ฒˆ์งธ ๋“ค์–ด์žˆ๋Š” ๊ฐ’์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ค€ ๊ฒฝ์šฐ

a = [(0, 4), (1, 2), (1, -1), (2, 2), (3, 3)]
d = sorted(a, key = lambda x : x[1])
print(d)

# [(1, -1), (1, 2), (2, 2), (3, 3), (0, 4)]
# ๋’ค์˜ ์ธ์ž์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋Š”๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

   

   3. ์ฒซ๋ฒˆ์งธ ๋“ค์–ด์žˆ๋Š” ๊ฐ’์€ ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‘๋ฒˆ์งธ ๋“ค์–ด์žˆ๋Š” ๊ฐ’์€ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์ค€ ๊ฒฝ์šฐ

# ๋‚ด๋ฆผ์ฐจ์ˆœ์€ ์•ž์— -๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค!!
e = sorted(a, key = lambda x = (x[0], -x[1]))
print(e)

# [(0, 4), (1, 2), (1, -1), (2, 2), (3, 3)]

 


 

# 11651. ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ2
import sys
input = sys.stdin.readline
N = int(input())
result = []

# x๊ฐ’์— ์ƒ๊ด€์—†์ด y ๊ฐ’์„ ์ •๋ ฌ => y ๊ฐ’ ์ •๋ ฌ
for _ in range(N):
    x, y = map(int, input().split())
    result.append([x, y])

ans = sorted(result, key = lambda x : (x[1], x[0]))
for x, y in ans:
    print(x, y)

 

๋ฐฐ์šด ๊ฒƒ์„ ํ† ๋Œ€๋กœ ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด ์ด๋Ÿฌํ•œ ์ฝ”๋“œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค!!

๋‹ค์Œ ์ •๋ ฌ ๋ฌธ์ œ๋Š” ๋žŒ๋‹ค๋กœ ๋„์ „ํ•ด๋ด์•ผ๊ฒ ๋‹ค ๐Ÿ˜‚๐Ÿ˜‚๐Ÿ˜‚

 

 

 

728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

์˜ค๋Š˜ ์นœ ์‹œํ—˜ ๋ฌธ์ œ์ค‘์— bfs, dfs  ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ํ•˜์ง€ ๋ชปํ•ด์„œ ๋ณต์Šต ํ•˜๋ ค๋‹ค๊ฐ€ ์‹œํ—˜ ์นœ ๊ธฐ๋…์œผ๋กœ(?)๐Ÿ˜‚๐Ÿ˜‚๐Ÿ˜‚

๋‹จ๊ณ„๋ณ„ ์œ„์— ์•ˆ ํ‘ผ๊ฑฐ ์ค‘์— 7๋‹จ๊ณ„ ์ผ๋ฐ˜์ˆ˜ํ•™์„ ๋งˆ๋ฌด๋ฆฌํ•˜๊ธฐ๋กœํ–ˆ๋‹ค!!! 

๋Œ€๋ถ€๋ถ„ ๋ธŒ๋ก ์ฆˆ๊ณ  ๊ทœ์น™๋งŒ ์ฐพ์œผ๋ฉด ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•œ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์ธ๋ฐ ๋ถ„์ˆ˜์ฐพ๊ธฐ๊ฐ€ ๊ณจ๋จธ๋ฆฌ๊ฐ€ ์กฐ๊ธˆ ์•„ํŒ ๋‹ค ^________^

 

๋ฌธ์ œ๐Ÿค”

๋ฌดํ•œํžˆ ํฐ ๋ฐฐ์—ด์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„์ˆ˜๋“ค์ด ์ ํ˜€์žˆ๋‹ค.

1/1 1/2 1/3 1/4 1/5
2/1 2/2 2/3 2/4
3/1 3/2 3/3
4/1 4/2
5/1

์ด์™€ ๊ฐ™์ด ๋‚˜์—ด๋œ ๋ถ„์ˆ˜๋“ค์„ 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … ๊ณผ ๊ฐ™์€ ์ง€๊ทธ์žฌ๊ทธ ์ˆœ์„œ๋กœ ์ฐจ๋ก€๋Œ€๋กœ 1๋ฒˆ, 2๋ฒˆ, 3๋ฒˆ, 4๋ฒˆ, 5๋ฒˆ, … ๋ถ„์ˆ˜๋ผ๊ณ  ํ•˜์ž.

X๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, X๋ฒˆ์งธ ๋ถ„์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— X(1 ≤ X ≤ 10,000,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

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

 

๋‚ด ํ’€๐Ÿฆท

# 1193. ๋ถ„์ˆ˜ ์ฐพ๊ธฐ
N = int(input())

line = 0 # ๋Œ€๊ฐ์„  ๊ฐฏ์ˆ˜
idx = 0 # ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค (1, 3, 6, 10...)
while idx < N:
    line += 1
    idx += line # ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋Š” ๋ผ์ธ์— ์žˆ๋Š” ๋ถ„์ž์˜ ๊ฐฏ์ˆ˜ ๋งŒํผ ๋Š˜์–ด๋‚œ๋‹ค

result = []
# ๋ผ์ธ ํ™€์ˆ˜์ผ ๋–ผ
if line % 2:
    ja = idx - N + 1     # ๋ถ„์ž
    mo = line - idx + N  # ๋ถ„๋ชจ
    result.append(ja)
    result.append('/')
    result.append(mo)
else:
    ja = line - idx + N
    mo = idx - N + 1
    result.append(ja)
    result.append('/')
    result.append(mo)
    
print(''.join(map(str, result)))

๋ญ”๊ฐ€ ๋Š๋‚Œ์ ์ธ ๋Š๋‚Œ์€ ์•Œ๊ฒ ๋Š”๋ฐ ์ฐพ๊ธฐ ์‰ฝ์ง€ ์•Š์•˜์ง€๋งŒ ๋ถ„์ˆ˜๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ ๊ณ  ๋œฏ์–ด๋ณด๋ฉด ๊ทœ์น™์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค!!  ใ…œใ…œใ…œ

N๋งŒ์„ ๊ฐ€์ง€๊ณ  ๋ถ„์ž์™€ ๋ถ„๋ชจ๋ฅผ ์–ด๋–ป๊ฒŒ ์ ์–ด์•ผํ• ์ง€๋ฅผ ์ œ์ผ ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ–ˆ๋˜ ๋ถ€๋ถ„์ธ๊ฒƒ ๊ฐ™๋‹ค.....

ja = ๋ถ„์ž / mo = ๋ถ„๋ชจ ์ž…๋‹ˆ๋‹ค ใ…‹ใ…‹ใ…‹

 

 

์ฐธ๊ณ ํ•จ๋ฉด ์ข‹์„ ๊ฐœ๋…๋“ค โœ๏ธ

  • ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ถœ๋ ฅํ•˜๊ธฐ
result = [1, 2, 3, 4]
# ๊ณต๋ฐฑ์—†์ด ์ถœ๋ ฅ
print(''.join(map(str, result)))   # 1234
# ๊ณต๋ฐฑ์žˆ์ด ์ถœ๋ ฅ
print(' '.join(map(str, result)))  # 1 2 3 4
# , ์‰ผํ‘œ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์ถœ๋ ฅ
print(', '.join(map(str, result))  # 1, 2, 3, 4
# ์–ธํŒจํ‚น
print(*result)                     # 1 2 3 4

 

728x90
๋ฐ˜์‘ํ˜•

+ Recent posts