전체 글 100

자바 스터디 시작

백기선님과 함께하는 자바 스터디. 이미 예전에 진행된 스터디지만 한동안 사용하지 않았던 자바를 다시 떠올릴 겸 시작해 본다. 목차 1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가 2주차 과제: 자바 데이터 타입, 변수 그리고 배열 3주차 과제: 연산자 4주차 과제: 제어문 5주차 과제: 클래스 6주차 과제: 상속 7주차 과제: 패키지 8주자 과제: 인터페이스 9주차 과제: 예외 처리 10주차 과제: 멀티쓰레드 프로그래밍 11주차 과제: Enum 12주차 과제: 애노테이션 13주차 과제: I/O 14주차 과제: 제네릭 +컬렉션 15주차 과제: 람다식 https://github.com/whiteship/live-study https://docs.oracle.com/javase/tutori..

자바 스터디 2022.05.16

[백준 알고리즘] 13460번 구슬 탈출2. 파이썬(python)

from collections import deque n,m=map(int, input().split()) graph=[] # 각 구슬의 위치를 혹인 for i in range(n): graph.append(list(input())) for j in range(m): if graph[i][j] == 'R': # 빨간구슬 위치 rx, ry = i, j elif graph[i][j] == 'B': # 파란구슬 위치 bx, by = i, j # 상 하 좌 우로 탐색 dx = [-1, 1, 0, 0] dy = [0, 0, -1 ,1] visited = [] # 방문여부를 판단하기 위한 리스트 def move(_x,_y,dx,dy,cnt): while graph[_x+dx][_y+dy] != '#' and gra..

알고리즘 2022.05.16

[백준 알고리즘] 4386번 별자리 만들기. 파이썬(python)

TypeError: list indices must be integers or slices, not list 타입에러: 리스트 인덱스는 리스트가 아닌 정수 또는 슬라이스여야 합니다. 6번째 줄에서 i를 리스트로 감싼 후 다시 리스트에 넣는 실수를 했다. # 잘못된 경우 parent=[[i] for i in range(n+1)] [[0],[1],[2],[3]] # 의도 parent=[i for i in range(n+1)] [0,1,2,3] import math n=int(input()) edges=[list(map(float,input().split())) for _ in range(n)] costs=[] parent=[i for i in range(n+1)] result=0 for i in range(..

알고리즘 2022.05.05

[백준 알고리즘] 1647번 최소 도시 분할 계획. 파이썬(python)

시간 초과가 뜨면서 에러가 났다. 입력에서 input()부분을 sys.stdin.readline()으로 바꿔 줬다. import sys n,m=map(int,sys.stdin.readline().split()) edges=[list(map(int,sys.stdin.readline().split())) for _ in range(m)] cnt=0 parent = [i for i in range(0,n+1)] edges.sort(key=lambda x:x[2]) def find(x): if parent[x] !=x: parent[x]=find(parent[x]) return parent[x] def union(a,b): a = find(a) b = find(b) # 더 작은 루트노드를 루트노드로 선택 if ..

알고리즘 2022.05.04

[백준 알고리즘] 1197번 최소 스패닝 트리. 파이썬(python) + lambda, union-find

lambda 함수를 따로 호출하지 않고 사용하는 방식 lambda {인자}:{표현식} # 인자로 들어온 값에 10을 더해서 반환한다 lambda x:x+10 # 인자로 들어론 값을 더해서 반환한다. lambda x,y:x+y lambda와 map 리스트의 요소를 인자로 놓은 함수에 넣어 새로운 리스트 반환 new_list = map(lambda x:x+5,range(5)) print(list(new_list)) [5,6,7,8,9] # edge리스트의 2번째 원소를 기준으로 정렬 edge.sort(key=lambda x:x[2]) union-find 알고리즘 Disjoint Set(상호배타적 집합) 알고리즘으로 여러 노드 중 선택한 두 노드가 같은 그래프에 속하는지 판별하는 알고리즘 더보기 Disjoin..

알고리즘 2022.05.04

[백준 알고리즘] 2606번 바이러스. 파이썬(python)

n=int(input()) # 컴퓨터 개수 = 노드 개수 m=int(input()) # 연결된 컴퓨터 쌍 수 = 간선 개수 # 인접행렬 graph=[[0]*(n+1) for _ in range(n+1)] for _ in range(m): x,y=list(map(int,input().split())) graph[x][y]=graph[y][x]=1 visited=[0]*(n+1) # 방문 체크에서 연결되었다는 표시인 1의 개수를 세면된다 def dfs(v): visited[v]=1 for i in range(n+1): if graph[i][v]==1 and visited[i]==0: dfs(i) dfs(1) # 1번 노드에 연결된 노드의 개수만 구하면 된다. print(sum(visited)-1) # 1번 ..

알고리즘 2022.04.28

[백준 알고리즘] 2667번 단지번호붙이기. 파이썬(python)

유기농 배추와 같은 유형의 문제이다. 연결된 숫자를 탐색해 몇 뭉텅이인지 세는 문제. 유기농 배추는 dfs로 풀었지만 이번 문제는 bfs를 이용해 풀었다. 둘다 어느것으로 풀어도 상관은 없다. 단지번호붙이기는 가로, 세로가 같아서 더 쉽게 풀었지만 유기농 배추는 달라서 행렬을 잘 계산해야하는 주의가 필요하다. from collections import deque dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] def bfs(x,y,graph): queue = deque() queue.append((x,y)) graph[x][y]=0 # 방문한 곳은 0으로 바꾸어 표기 count=1 # 위에서 한 번 방문한 것으로 계산해서 1부터 시작 while queue: x,y=queue.pople..

알고리즘 2022.04.28