본문 바로가기

Baekjoon Algorithm/python46

[Python]BAEKJOON 2606번 바이러스 (dfs, bfs) https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 .. 2023. 10. 1.
[Python]BAEKJOON 母音を数える (Counting Vowels) 문제링크 입출력 정답코드 https://www.acmicpc.net/problem/18409 18409번: 母音を数える (Counting Vowels) 長さ N の英小文字からなる文字列 S が与えられる.S のうち母音字の個数,つまり a,i,u,e,o の個数の総和を求めよ. www.acmicpc.net 예제 입력 1 8 joiyosen 예제 출력 1 4 예제 입력 2 6 bitaro 예제 출력 2 3 Sol - 모음개수 출력 int(input()) cnt = 0 for i in input(): if i in ['a','e','i','o','u']: cnt += 1 print(cnt) 2023. 4. 24.
[Python]BAEKJOON 11055번 https://www.acmicpc.net/problem/11055 11055번: 가장 큰 증가하는 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가하는 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가하는 www.acmicpc.net 실패- Try1 ## 틀린코드. N = int(input()) lst = list(map(int,input().split())) dp = lst.copy() for i in range(N): for j in range(i): if lst[i] > lst[j]: dp[i] += lst[j] ## 고쳐야 할 부분 # print(dp) pri.. 2023. 3. 15.
[Python]BAEKJOON 14002번 가장 긴 증가하는 부분 수열 4 https://www.acmicpc.net/problem/14002 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net DP활용 Sol. - 솔직히 다른 블로그의 글을 참고했다. dp 활용까진 이해했는데 아래와 같은 이유로 막혔기 때문이다. 필자는 for i in range(0,N,-1): 이라고 썼다가 왜 안되는지 한참 고민했다. 세번째 argument 값이 역순으로 카운트하게 한다고 착각했기 때문이다. for i in range(.. 2023. 3. 14.
[Python]BAEKJOON 10816번 숫자카드 2 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 실패 Try 1 import sys input = sys.stdin.readline N = int(input()) lst = list(map(int,input().split())) lst.sort() int(input()) flst = list(map(int,input().split())) res = [] def bin(i,lst,left,right,cnt): i.. 2023. 3. 6.
[Python]BAEKJOON 10815번 숫자카드 https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 전형적인 이분탐색 문제. 1920번 수찾기 문제와 동일한 코드로 작성할 수 있는데, 유일하게 다른 점은 1920번은 개행시켜 출력하는 반면 10815은 한줄에 출력한다. https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], .. 2023. 3. 6.
[Python]BAEKJOON 6491번 Perfection https://www.acmicpc.net/problem/6491 i: print(i, "ABUNDANT") elif sum(lst) < i: print(i, "DEFICIENT") 입력값이 한 줄로 안들어면 어떻게 들어오느냐. 15 28 232 6 12 56 60000 22 496 0 이딴식으로 들어오는 게 가능하다. 그래서 답이 아래와 같다. 15 DEFICIENT 28 PERFECT 232 DEFICIENT 6 PERFECT 12 ABUNDANT 56 ABUNDANT 60000 ABUNDANT 22 DEFICIENT 496 PERFECT 덕분에 알게 된 조건과, extend()함수. 평소에 리스트 내장 append()함수만 즐겨 사용했는데, 이 기회에 extend()함수를 쓸 수 있게 됐다. N =.. 2023. 3. 2.
[Python]BAEKJOON 11723번 집합 https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 계속 75%에서 틀렸다.. if a[0] =='all':S=set([i for i in range(1,21)]) 에서 set([i for i in range(1,21)])라고 하지 않고 {[i for i in range(1,21)]}라고 했기 때문. set를 쓰지 않고 대괄호를 사용하면 unhashable type error가 발생한다. dictionary type에 list형이 잘못 들어갔다는 경고다. 또 실수 했던 부분은 저 위.. 2023. 2. 27.
[Python]BAEKJOON 1620번 나는야 포켓몬 마스터 이다솜 https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 시간초과 실패 try 리스트를 이용했고, 아래 딕션너리와 다르게 숫자 인덱스에 포켓몬 이름만 저장 가능하므로 포켓몬 이름이 주어졌을 때, 인덱스를 찾기 위해선 index()함수를 쓸 수 밖에 없다.. 이게 시간초과를 유발한다. import sys input = sys.stdin.readline N, M = map(int,input().split()) lst = [] f.. 2023. 2. 25.