본문 바로가기

Baekjoon Algorithm51

[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][C++]BAEKJOON 1253번 좋다 https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 문제 N개의 수 중에서 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있다면 그 수를 “좋다(GOOD)”고 한다. N개의 수가 주어지면 그 중에서 좋은 수의 개수는 몇 개인지 출력하라. 수의 위치가 다르면 값이 같아도 다른 수이다. 입력 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) 출력 좋은 수의 개.. 2023. 9. 29.
[Python]BAEKJOON 1806번 부분 https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 문제 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며.. 2023. 6. 24.
[c++]Baekjoon 15650 N과 M(2) 이 블로그의 본업은 개발입니다. 최근 몇 주 동안 일상 얘기와 노트 정리한 것만 올리다보니 tistory DB내에서 일상/종교 분과로 분류된 것 같습니다.ㅋㅋㅋㅋ 유독 프로그래밍 관련 포스팅 조회수가 없더군요. 다시 본업에 집중해야겠습니다. 오늘 풀어본 문제는 그 유명한 N과 M문제입니다. Backtracking으로 잘 알려져 있는 문제입니다. Backtracking은 이름에 나와있는 것처럼 'Back', 즉 뒤로 돌아가는 과정이 수반되는 알고리즘입니다. 보통 Backtracking을 설명할 때 해를 찾는 도중 조건에 맞지 않으면 중단하고 바로 이전 단계로 돌아가 다시 확인하는 것을 반복하면서 답을 찾는 과정이라고 소개합니다. 이렇게만 들으면 도통 이해할 수가 없습니다. 그래서 baaarkingdog님의.. 2023. 4. 28.
[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.
[Java] BAEKJOON 1259 팰린드롬수 https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 이쪽 업계에선 엄청 유명한 문제다. 재귀로 푸는 팰린드롬 문제가 많기 때문. 그런데 오늘 문제는 단순해서 그냥 method 몇 번 쓰면 풀린다. method는 숫자를 뒤집는 reverse() 함수와 팰린드롬 수가 맞는지 확인하는 isPalindrome()함수로 구성된다. import java.util.Scanner; public class Main { public static void main(String[] a.. 2023. 3. 16.
[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.