728x90
반응형

개발 72

[Baekjoon 11055 / Python / 실버2] 가장 큰 증가하는 부분 수열

import copyimport sysinput = sys.stdin.readlineN = int(input())numList = list(map(int, input().split()))dp = copy.deepcopy(numList)for i in range(1, N):    for j in range(i):        if numList[i] > numList[j]:            dp[i] = max(dp[i], dp[j] + numList[i])print(max(dp)) 가장 긴 증가하는 부분 수열(LIS)문제와 거의 흡사한 문제이다. 문제의 원리는 거의 같지만 요구하는 출력값이 다르다. LIS는 수열이 길이를 출력했다면, 이 문제는 수열을 모두 더한 값을 출력한다. dp테이블로 사용하기 ..

[Baekjoon 11053 / Python / 실버2] 가장 긴 증가하는 부분 수열

import sysinput = sys.stdin.readlineN = int(input())numList = list(map(int, input().split()))dp = [1] * Nfor i in range(1, N):    for j in range(i):        if numList[i] > numList[j]:            dp[i] = max(dp[i], dp[j]+1)print(max(dp)) Longest Increasing Subsequence(LIS) 문제로, DP유형의 대표적인 문제 중 하나다.처음엔 문제만 보고 뭐야 이게 진짜 실버2라고..? 란 생각과 함께 코드를 짜서 제출했지만 역시 실패했다. 나는 크게 두 가지를 간과했다.1. 수열이 첫 번째 숫자부터 시작할 필요..

[Baekjoon 1911 / Python / 골드5] 흙길 보수하기

import sysinput = sys.stdin.readline# N개의 웅덩이, L길이의 널빤지N, L = map(int, input().split())water = []# 겹치는 웅덩이는 들어오지 않는다# 웅덩이 좌표 : [1, 6] -> 1 2 3 4 5for _ in range(N):    water.append(list(map(int, input().split())))sortedWater = sorted(water, key=lambda x: (x[0])) # 시작 위치 기준으로 정렬def fix(size, L):    if size % L >= 1:        return size // L + 1    else:        return size // Ldef solve():    resul..

Algorithm/Greedy 2024.08.19

[Baekjoon 13335 / Python / 실버1] 트럭

from collections import dequeimport sysinput = sys.stdin.readlineN, W, L = map(int, input().split())truck = list(map(int, input().split()))q = deque([0] * W) # 큐 사용time = 0 # 경과시간while q:    time += 1 # 반복할 때마다 시간 증가    q.popleft()    if truck:        if sum(q) + truck[0] L: # 무게 제한에 걸리지 않으면 다리에 올리기            q.append(truck.pop(0))        else:            q.append(0) # 무게에 걸렸다면, 다리길이를 맞추기 위해 0..

Algorithm/Queue 2024.08.16

[Baekjoon 2529 / Python / 실버1] 부등호

import sysinput = sys.stdin.readlineN = int(input()) # 부등호 개수boo = list(input().split()) # 부등호 리스트result = []visited = [False] * 10 # depth는 숫자 개수만큼def compare(a, b, op):    if op == '>':        if a b: return False    elif op == ':        if a > b: return False    return True# 깊이, 현재숫자(문자열)def backTracking(depth, num):    # 숫자가 완성되었다면 결과 리스트에 추가    if depth == N + 1:        result.append(num) ..

[Baekjoon 5427 / Java / 골드4] 불

BFS 문제이다. 불이 1초마다 상하좌우로 1칸씩 퍼지고, 상근이는 1초마다 상하좌우로 1칸씩 이동할 수 있다.건물 끝 4방향의 '.' 빈 공간에 다다르면 탈출에 성공하게 된다. 상근이의 빌딩 탈출에 걸리는 시간을 출력하고, 탈출할 수 없다면 IMPOSSIBLE을 출력하면 된다. import java.io.*;import java.util.*;public class 불_5427 {    static int N; // 테스트 케이스 개수    static int[] dx = {-1, 1, 0, 0};    static int[] dy = {0, 0, -1, 1};    static char[][] tower;    static int[][] visited;    static int w, h;    publ..

Algorithm/BFS 2024.06.08

PintOS 프로젝트 2주차 [User Programs / Argument Passing]

PintOS는 Command Line에 명령어를 받아 프로그램을 실행할 때, 인자를 인식하지 못한다.ex ) /bin/ls -l foo bar  일 경우, 명령(파일명)과 인자를 나누지 못하고 전부 하나로 인식 Argument Passing은 PintOS의 이러한 점을 개선하여 PintOS가 명령에 대한 파일명과 인자를 구분하여 받을 수 있도록 하는 것이 목표이다. 명령어와 인자들은 command Line으로 입력된 후 process_exec 함수에서 argv 배열에 저장되며, argc 변수엔 인자의 개수가 저장된다. (파일명도 인자다)argv, argc를 이용하여 인자들은 Stack에 저장되어 User Program이 사용하게 되는데, 우리가 Stack에 저장되도록 구현해야 한다.  %rsp는 스택 포..

[크래프톤 정글 5기] 알고리즘 2주차 마지막 날, 백준 골드5 달성

매일매일 엄청난 양의 지식을 머리에 꾸역꾸역 넣고 있다. 공부가 잘 안 되는 것 같고, 집중도 안 되는 것 같고. 남들은 더 열심히 하는 것 같고, 나는 부족한 것 같고 하는 생각이 계속계속 들어도, 멈춰서 차근히 돌아보면 지금의 나는 입소날인 3월18일보다 몇 배로, 말도 안되게 빠른 속도로 성장했다. 실질적인 웹 개발이나 프로젝트 경험이 전무하던 내가 입소 4일만에 어엿한 웹사이트를 하나 만들어 냈고, 프로젝트 경험이 생겼다. 알고리즘의 ㅇ자도 모르던 내가 2주만에 DFS, BFS, 백트래킹, 최소스패닝트리, 위상정렬, 여러가지 그래프 이론, 스택, 큐, 힙, 정렬, 재귀함수, CS지식 등등 이것보다 훨씬 많은 말도 안되게 많은 지식을 습득했으며, 백준 티어도 어느새 골드5가 되었다. 하루하루가 정말..

[크래프톤 정글 5기] week02 알고리즘 주차 열한번째 날, 파이썬 나눗셈, 위상 정렬

파이썬 코드에서 a = -7 b = 2 일 때, 1. int(a / b) -> -3 2. a // b -> -4 가 된다. 1번은 a를b로 나눈 후 정수 형태로 바꾸기 위해 소수점 부분을 미련없이 버린다. 반면 2번의 // 연산은 “내림”을 수행한다. -3.5에서 “내림”을 하면 -4가 된다. 만약 양수인 3.5였다면 3이 되었겠지만, 음수에서는 더 작은 수가 -4기 때문에 그렇다. 이것을 신경쓰며 코드를 짤 필요가 있어 보인다. DAG(Direct Acyclic Graph) - 사이클이 없는(비순환적) 방향 그래프 위상 정렬(topological sort) - 사이클이 없는 방향 그래프(DAG)에서 정점들을 순서대로 나열하는 알고리즘. “선후관계를 만족하는 정점의 순서”를 찾는다. - 순서가 정해져 있..

[크래프톤 정글 5기] 첫 프로젝트를 마무리하며

4일 전 3월18일 월요일에 아침 7시20분 버스를 타고 수원으로 왔다. 기숙사 키와 정글 로고가 그려진 후드집업과 반팔을 받고, 기숙사에 짐을 풀고, 필요한 물품을 사고. 점심 먹고 14시부터 입소식이 시작되었다. 입소식이 마무리된 16시경부터 생각을 정리할 새도 없이 갑작스럽게 첫 미니프로젝트가 시작되었다. 팀원은 나까지 총 3명. 주제는 "어떤 식으로든 돌아가는 웹 서비스 만들기". 주어진 시간은 3박 4일. 하지만 3박 4일이라고 해도 첫날은 16시부터 시작했고 두번째날은 중간중간 행사가 있어 흐름이 끊겼고, 세번째날만 온전히 집중할 수 있는 날이었다. 게다가 마지막 4일째는 13시30분이 발표였다. 즉.. 말이 3박4일이지 사실상 2박3일이나 다름없었다. 개발이라곤 스프링 CRUD게시판 클론코딩..

728x90
반응형