전체 글 100

[백준 알고리즘] 9251번 LCS 최장 공통 부분 수열. 파이썬(python)

https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 문자열 s1, s2 가있을 때 s1[i]==s2[j] 라면 (같은 문자가 발견되면) => dp[i-1][j-1]+1 s1[i]와 s2[j]는 각각 s1, s2의 부분 문자열이다. s1=ACAYKP s2=CAPCAK 'K'가 같은 경우 s1[4]==s2[5] 이므로 그전까지의 문자열인 ACAY(s1[4-1])과 CAPCA(s2[5-1])를 비교했을 때 나..

알고리즘 2022.10.21

[백준 알고리즘] 4358번 생태학. 파이썬(python)/ 소수점

https://www.acmicpc.net/problem/4358 4358번: 생태학 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어 www.acmicpc.net 소수점 출력 # 소수점 2자리까지 출력 = 3자리에서 반올림 n=52.12546 print('%.2f' %n) >>> 52.13 import sys input=sys.stdin.readline trees={} total=0 while True: tree=input().rstrip() if not tree: # 입력이 비면 break if tree in trees: trees[tree]+..

알고리즘 2022.10.20

[백준 알고리즘] 11652번 카드. 파이썬(python)/ 해시맵, 람다정렬

준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다. import sys input=sys.stdin.readline n= int(input()) hashmap={} for _ in range(n): card=int(input()) if card in hashmap: # 해시맵에 있으면 hashmap[card]+=1 else: # 해시맵에 없으면 hashmap[card]=1 answer=sorted(hashmap.items(), key=la..

알고리즘 2022.10.19

[백준 알고리즘] 14881번 물통 문제. 파이썬(python)/ 최대공약수

이해를 위한 글.. https://namu.wiki/w/%EC%9B%90%ED%95%98%EB%8A%94%20%EB%AC%BC%EC%9D%98%20%EC%96%91%20%EC%96%BB%EA%B8%B0 https://elwlsek.tistory.com/725 풀어보면 좋을 것 같은 문제인데 생각보다 푼 사람이 많이 없다.. 2551번 물통도 풀어보길 추천 https://www.acmicpc.net/problem/14881 14881번: 물통 문제 용량이 a, b 리터인 두 물통이 있다. 이때, 물을 적절히 부어서 정확하게 c리터를 만들 수 있는지 아닌지 구하는 프로그램을 작성하시오. 물은 무한히 많다. www.acmicpc.net 주의) c는 a, b보다 커야 한다. a=2, b=2, c=4 일 때 NO..

알고리즘 2022.10.19

[백준 알고리즘] 2251번 물통. 파이썬(python)/ dfs, bfs

https://www.acmicpc.net/problem/2251 2251번: 물통 각각 부피가 A, B, C(1≤A, B, C≤200) 리터인 세 개의 물통이 있다. 처음에는 앞의 두 물통은 비어 있고, 세 번째 물통은 가득(C 리터) 차 있다. 이제 어떤 물통에 들어있는 물을 다른 물통으로 쏟아 부 www.acmicpc.net import sys from collections import deque input=sys.stdin.readline a,b,c=map(int, input().split()) # 경우의 수 담을 큐 q=deque() q.append((0,0)) visit=[[0]*(b+1) for _ in range(a+1)] visit[0][0]=1 answer=[] def pour(x,y)..

알고리즘 2022.10.19

sql 복기

연습 데이터 http://java-school.net/jdbc/SQL-SELECT-Statement Select Select SQL도 역시 표준이 존재한다. 여기서는 오라클을 사용하지만 표준 SQL 위주로 실습한다. SELECT 문장은 순서가 중요하다. SELECT 칼럼,칼럼... FROM 테이블명 WHERE 조건 GROUP BY 구문 UNION/UNION ALL/INTERS java-school.net MySQL 문법 - 구문 뒤에 ;으로 구분한다. (없어도 되긴 함) - 키워드와 구문에서 대소문자 구분을 하지 않음(select==SELECT) - 테이블 명과 필드의 이름은 대소문자 구분을 함 - 주석( #: 한줄, -- : 한줄, /**/: 여러줄) - 주요 구문 1. CREATE DATABASE 2..

카테고리 없음 2022.09.18

최단 경로 구하기. BFS? 다익스트라?

1. BFS 가중치가 없는 경우 사용. 시작노드에서 최종노드까지 가는데 지나온 간선의 개수가 거리가 된다. 모든 노드를 검사하면서 인접한 노드를 검사하기 때문에 그래프를 인접 리스트로 나타내면 O(∣V∣+∣E∣) 인접 행렬로 나타내면 O(∣V∣^2)가 된다. 따라서 그래프를 인접 리스트로 나타내자. DFS는? BFS에 비해 비효율적이라 사용하지 않는다. 2. 다익스트라 가중치가 있는 경우 사용. 특히 가중치가 서로 다를 때. 이동한 간선의 개수가 적다고 최단거리가 아닌 경우이다. 이럴 때는 BFS를 사용해 구할 수 없다. ※ 가중치에 음수가 있으면 사용할 수 없다. (벨만-포드!) 우선순위 큐를 이용해 가중치가 짧은 간선을 선택한다. 과정) 0. 각 노드까지의 최단거리를 저장할 리스트를 만든다.(최소값으..

알고리즘 2022.08.26

진수변환

진수변환 함수 사용 int(문자형 숫자, 현재 진수): 10진수로 int('1010',2) # 2진수의 1010-> 10진수 10 int('1010',8) # 8진수의 1010-> 10진수 520 int('1010',16) # 16진수의 1010-> 10진수 4112 bin(10진수 숫자): 10진수를 2진수로 oct(10진수 숫자): 10진수를 8진수로 hex(10진수 숫자): 10진수를 16진수로 bin(10) # 0b1010 oct(10) # 0o12 hex(10) # 0xa # 앞에 문자를 제거하고 싶으면 bin(10)[2:] # 1010 10진수를 n진수로 변환하려면 def convert(n, base): # n:10진수 숫자, base:구하고자 하는 n진수 rev_base = '' while ..

파이썬 2022.08.05