본문 바로가기

전체 글

(164)
탐색 알고리즘 정리 #1 - BFS(너비 우선 탐색) , DFS(깊이 우선 탐색) Python 구현 코드 from collections import deque def DFS(start, stack): dfs_visited[start] = True for next_node in range(1, N+1): if dfs_visited[next_node] == False: if adj_list[start][next_node] == 1 or adj_list[next_node][start]==1 : stack.append(next_node) DFS(next_node, stack) return stack def BFS(start): q = deque([start]) visited = [False]*(N+1) visited[start] = True while q: now = q.popleft() p..
[백준] JAVA - 1158.요세푸스 문제 N명이 모두 제거될때까지 계속 순열을 돌아가면서 K번째 사람을 제거하는 문제입니다. 1. K번째를 원순열에서 지워줘야하기 때문에 현재까지 지나온 횟수인 (cnt % K) 연산을 사용해서 K번째 인지를 체크합니다. 2. K번째 사람이라면 큐에서 pop을 해주고 결과값에 추가해줍니다. 3. K번째 사람이 아니라면 큐의 맨 앞 원소를 큐의 맨 뒤에다가 넣어줍니다. 4. 큐가 다 빌때까지 이 과정을 반복합니다. 마지막으로 결과를 출력할때 정해진 출력 형식이 있기 때문에 마지막 문자열에서 sb.deleteCharAt(sb.lastIndexOf(",")) 를 사용하여 ',' 와 공백을 제거해줬습니다. Java 코드 package com.ssafy.off; import java.io.BufferedReader; im..
[SWEA] JAVA - 9229. 한빈이와 Spot Mart 재귀 연습을 위해 재귀함수를 사용하여 풀었습니다ㅎㅎ 각각 다른 과자 두봉지를 살때 얻을수있는 최대 무게 합을 구하는 문제입니다. 우선 solve 함수에서 변화하는 값들을 파라미터로 설정했습니다. idx는 현재 뽑으려는 과자의 인덱스 번호입니다. cnt는 현재까지 뽑은 과자의 개수, weight 는 현재까지 뽑은 과자 무게의 총 합입니다. 제가 정의한 solve 재귀 함수의 역할은 idx번째 과자까지 뽑든 안뽑든 지나쳐왔으며 현재까지 뽑은 과자의 개수를 담고있고, 현재까지 뽑은 과자의 무게를 가지고 있습니다. 재귀 함수의 동작 방식은 다음과 같습니다. 1. 뽑은 과자의 총 개수가 두개일때 현재 가지고 있는 무게의 합을 리턴합니다. 2. 뽑은 과자의 개수가 두개가 안되는데 (최대 무게를 초과해 뽑지 못한상태..
[SWEA] JAVA - 1940. 가랏! RC카! 오늘 배운것 : Java에서 switch문은 내부적으로 hash로 구현되어있기 때문에 switch가 if else 보다 월등히 빠르다. 자동차의 현재 속도와 자동차의 총 이동거리를 누적한 변수들을 설정하여 이동거리 += (속도*1초) 로 풀었습니다. 여기서 현재속도 v보다 감속하는 속도가 더 클 경우에는 현재속도를 0으로 업데이트 시켜야 합니다. 가속명령어가 들어왔을 경우 현재속도에 가속된 값을 더해줘야 합니다. 마지막으로 for문이 한번돌때마다 1초가 반영됐기 때문에 (자동차의 누적 이동 거리 += 자동차의 현재속도) 연산을 해주면 됩니다. package com.ssafy.makeupclass; import java.io.BufferedReader; import java.io.IOException; i..
[SWEA] JAVA - 5215 햄버거 다이어트 주어진 햄버거 정보에서 어떤 햄버거들을 선택했을때 최대 칼로리 이하이면서 최대 만족도인지를 찾는 문제이다. 선택할수있는 햄버거들의 조합을 구한뒤 최대 만족도를 가지는 햄버거의 조합을 찾아야한다. 재귀함수를 사용해서 풀었는데 이 함수에서 파라미터로 전달해야할것은 몇번째 햄버거를 선택할것인지를 결정하는 인덱스, 현재까지 선택한 햄버거의 만족도 합, 현재까지 선택한 햄버거의 칼로리합이다. 1. idx 번째 햄버거를 선택 할 수 있다면(idx번 햄버거 칼로리와 이전까지 저장된 햄버거 칼로리를 더했을때 최대 칼로리를 넘지 않는다면) idx를 선택하거나 선택하지 않거나 두가지 경우로 분기한다. 2. idx 번 햄버거를 선택 할 수 없다면 다음 idx 햄버거를 고르러 간다. 3. 모든 햄버거를 다 탐색했을때이거나 현..
설날 TO DO LIST 설날동안 할일 생각해보니 상반기 기업 공채가 올라오기전까지 취업 준비를 여유있게 할 시간이 설날밖에 없는것같아 필요한것들을 미리 준비해야겠다. 설날이 아니면 매일 과제랑 보충수업에 스터디 공부가 있으니깐 설날이 정말 마지막 준비 시간이다!! 자소서 뼈대 다시 업데이트하기 -> 지금 미리 하고 계속 첨삭하자! 처음부터 완벽하게 할 생각 금지ㅎㅎ 인프런 파이썬 데이터 분석 or K-mooc 데이터 분석 교육 듣기 + 블로그 간단하게 포스팅 알고리즘 데일리로 최소 한 문제 이상 풀기!!
[SWEA] JAVA - 1861 정사각형방 package com.ssafy.off; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class SWEA_1861_정사각형방 { /** * 깊이우선탐색 * 이동할수있는 방의 개수가 동일한것이 여러개면 가장 작은 방 번호 출력 */ static int dy[] = {-1,1,0,0}; static int dx[] = {0,0,-1,1}; static int[][] map; static int ans; static int startRoom; //시작점부터 최대한 많은 거리를 도착했을때 내가 이동한 거리를 리턴 pub..
리눅스 강의 정리 #4 Linux Admin Network configuration : NetworkManager NetworkManager 데몬으로 작동하면서 Network configuration을 수행하고, 자동으로 네트워크 연결을 관리한다.또한 동적으로 이 작업들을 수행한다. legacy : ifconfig, route, ip, nmcli UNIX standard command(POSIX) ifconfig route : 라우팅 테이블을 질의하거나 설정한다.Non-standard command ip : 옛날 커맨드인데 지금도 사용한다 nmcli : 네크워크 매니저의 CLI 커맨드! eht#[:n] 문제점은 서버컴퓨터는 네트워크 카드(랜카드)가 4장 6장 → 어떤게 0번째고 어떤게 1번째인지 헷갈린다는것인다. 부팅할때 순서..