전체 글 100

[백준 알고리즘] 1461번 도서관. 파이썬(python)

제일 먼 거리를 마지막에 방문하는 것이 포인트 n,m=map(int,input().split()) a=list(map(int,input().split())) positive=[] nagative=[] for i in range(n): if a[i]>0: # 양수 positive.append(a[i]) else: # 음수 nagative.append(a[i]) positive.sort(reverse=True) # 내림차순 nagative.sort() # 오름차순 result=0 visit=[] for i in range(0,len(nagative),m): # m개씩 띄어서 visit.append(-nagative[i]) # 양수로 바꿔 저장 for i in range(0,len(positive),m): v..

알고리즘 2022.07.13

[백준 알고리즘] 15685번 드래곤 커브. 파이썬(python)

n=int(input()) # 드래곤 커브 개수 graph=[[0]*101 for _ in range(101)] # 드래곤 커브 dx=[1,0,-1,0] dy=[0,-1,0,1] for _ in range(n): x,y,d,g=map(int,input().split()) graph[x][y]=1 d_list=[d] # 방향 정보 리스트 for _ in range(g): # 세대 수 만큼 돌면서 for i in range(len(d_list)-1,-1,-1): # 방향리스트를 뒤집은 숫자 만들기 d_list.append((d_list[i]+1)%4) for i in d_list: nx = x + dx[i] ny = y + dy[i] graph[nx][ny]=1 x,y=nx,ny ans=0 # 꼭짓점 기준이..

알고리즘 2022.07.08

[백준 알고리즘] 14891번 톱니바퀴. 파이썬(python)

from collections import deque gear = {} for i in range(1, 5): gear[i] = deque((map(int, input()))) k=int(input()) how=[list(map(int,input().split())) for _ in range(k)] # index2, 6 인접한 톱니 def check_left(now_gear,dir): # 현재 톱니가 첫번째보다 작다 or 현재톱니의 2번위치와 오른쪽 톱니의 6번위치의 값이 같다 if now_gear4 or gear[now_gear][6]==gear[now_gear-1][2]: return # 회전할 수 없으므로 종료 check_right(now_gear+1, -dir) # 인접한 톱니의 인접한 톱니까지..

알고리즘 2022.07.07

N과 M 시리즈-백트래킹

N과 M (1) def dfs(): if len(result)==m: # m개를 골랐으면 출력 print(*result) return for i in range(1,n+1): if visited[i]==0: # 방문을 안했으면 result.append(i) # 값을 저장 visited[i]=1 # 방문 체크 dfs() result.pop() # 값 제거 visited[i]=0 # 방문 원래대로 돌리기 n,m=map(int,input().split()) result=[] visited=[0]*(n+1) dfs() N과 M (2) def dfs(s): if len(result)==m: # m개를 골랐으면 출력 print(*result) return for i in range(s,n+1): if visited..

알고리즘 2022.06.26

백준 DFS 모음

DFS(Depth First Search, 깊이 우선 탐색) 시작 정점에서 한 방향으로 계속 탐색하다가 더 이상 갈 곳이 없으면 가장 마지막 분기 간선이 있는 정점으로 돌아와 다른 방향의 정점의 탐색을 반복해 모든 정점을 방문하는 순회 기법 스택을 사용해 구현한다. 파이썬으로 DFS를 구현할 때 주의 import sys sys.setrecursionlimit(100000) 2583번 영역 구하기 2644번 촌수계산 16173번 점프왕 쩰리 1167번 트리의 지름 1937번 욕심쟁이 판다 9466번 텀 프로젝트 2583번 영역 구하기 import sys sys.setrecursionlimit(100000) input=sys.stdin.readline m,n,k=map(int, input().split())..

알고리즘 2022.06.24

백준 BFS 모음

BFS(Breadth First Search, 너비 우선 탐색) 시작 노드의 인접한 노드를 모두 방문한 후, 방문했던 노드의 인접한 노드를 방문하는 것을 반복한다. 큐를 사용해 구현할 수 있다. 큐에 한 번 들어가게 되면 방문이 확정된다. 따라서 큐에 들어가는 노드는 다시 큐에 들어갈 필요가 없으므로 visited를 사용해 방문 표시하고 방문에서 제외한다. 방문시 값을 변경해도 되는 것은 따로 visited를 만들지 않고 연관 없는 숫자로 바꾸어 방문을 표시해도 된다. 풀이 바로가기 1926번 그림 2178번 미로탐색 2667번 단지번호붙이기 7576번 토마토 7569번 토마토(심화) 2206번 벽 부수고 이동하기 10026번 적록색약 2468번 안전 영역 16236번 아기상어 14502번 연구소 117..

알고리즘 2022.06.21

15주차 과제: 람다식

목표 자바의 람다식에 대해 학습하세요. 목차 1. 람다식 사용법 2. 함수형 인터페이스 3. Variable Capture 4. 메소드, 생성자 레퍼런스 1. 람다식 사용법 람다식(익명 함수) 메소드를 하나의 식으로 표현 장점 가독성 코드 간결성 멀티쓰레드 실행문을 바로 전달(메소드로 값이나 객체를 생성해 전달하는 방식과 달리 실행문 자체를 전달해 구현) 단점 람다식을 너무 많이 사용하면 가독성이 떨어짐 재사용 불가 사용법 (매개변수) -> {실행문} () -> // 실행문이 단일일 경우 {}생략 가능. return이 있으면 {}가 있어야 한다 // 함수로 작성한 덧셈 public int sum(int a, int b){ return a+b; } // 람다식으로 작성한 덧셈 (a, b) -> a+b; 2..

자바 스터디 2022.06.17

14주차 과제: 제네릭 +컬렉션

목표 자바의 제네릭에 대해 학습하세요. 목차 1. 제네릭 사용법 2. 제네릭 주요 개념 (바운디드 타입, 와일드 카드) 3. 제네릭 메소드 만들기 4. Erasure 컬렉션 컬렉션(collection, collection framework) : 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것. 컬렉션은 자바의 인터페이스를 사용하여 구현된다. 컬렉션의 장점 데이터 구조와 알고리즘 제공으로 프로그래밍 노력을 줄여줌(직접 작성할 필요가 없음) 성능 향상 관련 없는 API간의 상호 운용성을 제공 API 학습, 설계, 구현을 하는 데 필요한 노력을 줄여줌 소프트웨어 재사용 컬렉션 ..

자바 스터디 2022.06.15

13주차 과제: I/O

목표 자바의 Input과 Ontput에 대해 학습하세요. 목차 1. 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O 2. InputStream과 OutputStream 3. Byte와 Character 스트림 4. 표준 스트림 (System.in, System.out, System.err) 5. 파일 읽고 쓰기 1. 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O 스트림(Stream) 데이터 전송 통로 - 스트림은 단방향이라 입출력을 동시에 하기 위해선 input stream, output stream이 필요하다. - 큐 형식(FIFO)을 가진다. - 스트림은 입출력 장치와 자바 응용프로그램을 연결 - 바이트나 문자 단위로..

자바 스터디 2022.06.15