반응형
반응형

[백준] 1005번 ACM Craft - PYTHON  https://www.acmicpc.net/problem/1005

알고리즘 분류

 

출력

건물 W를 건설완료 하는데 드는 최소 시간을 출력한다. 편의상 건물을 짓는 명령을 내리는 데는 시간이 소요되지 않는다고 가정한다.

건설순서는 모든 건물이 건설 가능하도록 주어진다.

제한

  • 2 ≤ N ≤ 1000
  • 1 ≤ K ≤ 100,000
  • 1 ≤ X, Y, W ≤ N
  • 0 ≤ Di ≤ 100,000, Di는 정수

>> 소스 

import sys
from collections import deque
 
T = int(input(" 테스트 케이스 T 입력 : "))
 
for _ in range(T):
    N,K=map(int,input(" 건물수, 건설 순서 : ").split())#건물수, 건설순서규칙
    time=[0]+list(map(int,input(" 각 건물들의 건설시간 : ").split()))#건물들의 건설시간
    seq=[[] for _ in range(N+1)]#건설순서규칙
    inDegree=[0 for _ in range(N+1)]#진입차수
    DP=[0 for _ in range(N+1)]#해당 건물까지 걸리는 시간
 
    for _ in range(K):#건설순서규칙 저장
        a,b=map(int,input(" 건설순서규칙 : ").split())
        seq[a].append(b)
        inDegree[b]+=1
 
    q = deque()
    for i in range(1,N+1):#진입차수 0인거 찾아서 큐에 넣기
        if inDegree[i]==0:
            q.append(i)
            DP[i]=time[i]
 
    while q:
        a=q.popleft()
        for i in seq[a]:
            inDegree[i]-=1#진입차수 줄이고
            DP[i]=max(DP[a]+time[i],DP[i])#DP를 이용해 건설비용 갱신
            if inDegree[i]==0:
                q.append(i)
 
 
    ans = int(input(" W : "))
    print(DP[ans])

>> 결과

>> ./1005_ACM_Craft.py 
 테스트 케이스 T 입력 : 2
 건물수, 건설 순서 : 4 4
 각 건물들의 건설시간 : 10 1 100 10
 건설순서규칙 : 1 2
 건설순서규칙 : 1 3
 건설순서규칙 : 2 4
 건설순서규칙 : 3 4
 W : 4
120
 건물수, 건설 순서 : 8 8
 각 건물들의 건설시간 : 10 20 1 5 8 7 1 43
 건설순서규칙 : 1 2
 건설순서규칙 : 1 3
 건설순서규칙 : 2 4
 건설순서규칙 : 2 5
 건설순서규칙 : 3 6
 건설순서규칙 : 5 7
 건설순서규칙 : 6 7
 건설순서규칙 : 7 8
 W : 7
39
반응형
반응형

[백준] 1003번 피보나치 fibonacci - PYTHON

https://www.acmicpc.net/problem/1003

 

1003번: 피보나치 함수

각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.

www.acmicpc.net

"""_summary_
   1003번 피보나치 함수  https://www.acmicpc.net/problem/1003
   문제
        다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다.

        int fibonacci(int n) {
            if (n == 0) {
                printf("0");
                return 0;
            } else if (n == 1) {
                printf("1");
                return 1;
            } else {
                return fibonacci(n‐1) + fibonacci(n‐2);
            }
        }
        fibonacci(3)을 호출하면 다음과 같은 일이 일어난다.

        fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다.
        fibonacci(2)는 fibonacci(1) (두 번째 호출)과 fibonacci(0)을 호출한다.
        두 번째 호출한 fibonacci(1)은 1을 출력하고 1을 리턴한다.
        fibonacci(0)은 0을 출력하고, 0을 리턴한다.
        fibonacci(2)는 fibonacci(1)과 fibonacci(0)의 결과를 얻고, 1을 리턴한다.
        첫 번째 호출한 fibonacci(1)은 1을 출력하고, 1을 리턴한다.
        fibonacci(3)은 fibonacci(2)와 fibonacci(1)의 결과를 얻고, 2를 리턴한다.
        1은 2번 출력되고, 0은 1번 출력된다. N이 주어졌을 때, fibonacci(N)을 호출했을 때, 0과 1이 각각 몇 번 출력되는지 구하는 프로그램을 작성하시오.
        입력
            첫째 줄에 테스트 케이스의 개수 T가 주어진다.
            각 테스트 케이스는 한 줄로 이루어져 있고, N이 주어진다. N은 40보다 작거나 같은 자연수 또는 0이다.

        출력
            각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.

        예제 입력 1 
            3
            0
            1
            3
        예제 출력 1 
            1 0
            0 1
            1 2
        예제 입력 2 
            2
            6
            22
        예제 출력 2 
            5 8
            10946 17711
 
처음에 zero는 1,0,1로 나열되고 one은 0,1,1로 나열된다.
그 이후의 n번째부터는 피보나치 수열(N2 = N1 + N0)로 나열된다.

그렇다면 이제, 규칙을 가지고 구현해보자.

0과 1의 초기배열을 먼저 만들어준다.
0은 [1,0,1] 1은 [0,1,1] 로 정해져있음.
for문으로 초기배열 이후 피보나치 수열로 구한 값을 배열에 추가해준다.
각 테스트케이스마다 0과 1의 횟수를 공백으로 출력해야한다.

"""

t = int(input())
zero = [1,0,1]
one = [0,1,1]

def fibo(n) : #[0,1,3]
    if len(zero) <= n :
        for i in range(len(zero), n+1) :
            zero.append(zero[i-1]+zero[i-2])
            one.append(one[i-1]+one[i-2])
    print(zero[n],one[n])

for i in range(t) : #[3]
    a = int(input()) #[0,1,3]
    fibo(a)
반응형
반응형

모두 집세를 내야 하기 때문에 아이들에게 코딩을 가르치고 있습니다.me teaching my kids coding because everyone must pay rent 

반응형
반응형

[python] How to write to an HTML file in Python

https://www.kite.com/python/answers/how-to-write-to-an-html-file-in-python

 

Kite - Free AI Coding Assistant and Code Auto-Complete Plugin

Code faster with Kite’s AI-powered autocomplete plugin for over 16 programming languages and 16 IDEs, featuring Multi-Line Completions. Works 100% locally.

www.kite.com

USE open() AND file.write() TO WRITE TO AN HTML FILE

Use open(file, mode) with mode as "w" to create a new HTML file file or write to an existing one. Use file.write(data) to write data to the file. Use file.close() to close the file after writing.

text = '''
<html>
    <body>
        <h1>Heading</h1>
    </body>
</html>
'''
file = open("sample.html","w")
file.write(text)
file.close()
SAMPLE.HTML
<html>
    <body>
        <h1>Heading</h1>
    </body>
</html>
반응형
반응형
반응형
반응형
생활코딩 오프라인 수업 라이브 - 작심40시간


https://opentutorials.org/module/696










...

반응형

+ Recent posts