728x90
반응형

개발 97

[Baekjoon 15655 / Python / 실버3] N과 M (6)

import sysinput = sys.stdin.readline# 중복 없으며 뒷 숫자가 더 커야 한다N, M = map(int, input().split())numbers = list(map(int, input().split()))numbers.sort()box = []def compare(a, b):    if a >= b:        return False    return Truedef backTracking(depth):    if depth == M:        print(' '.join(map(str, box)))        return        for i in range(N):        if depth == 0 or (numbers[i] not in box and compar..

[Baekjoon 15654 / Python / 실버3] N과 M (5)

import sysinput = sys.stdin.readlineN, M = map(int, input().split())numList = list(map(int, input().split()))numList.sort()box = []def backTracking(depth):    if depth == M:        print(' '.join(map(str, box)))        return        for i in range(N):        if not numList[i] in box:            box.append(numList[i])            backTracking(depth + 1)            box.pop()backTracking(0) 앞선 N과 M ..

[Baekjoon 15652 / Python / 실버3] N과 M (4)

import sysinput = sys.stdin.readline# 1 ~ N 까지의 수, M자리N, M = map(int, input().split())def compare(a, b):    if a > b:        return False    return Truedef backTracking(depth, num):    if depth == M:        print(' '.join(num))        return        for i in range(1, N + 1):        if depth == 0 or compare(int(num[-1]), i):            backTracking(depth + 1, num + str(i))backTracking(0, '') 앞선 N과..

[Baekjoon 15651 / Python / 실버3] N과 M (3)

import sysinput = sys.stdin.readline# 1 ~ N 까지의 수 / 길이는 MN, M = map(int, input().split())def backTracking(depth, num):        if depth == M:        print(' '.join(num))        return        for i in range(1, N + 1):        backTracking(depth + 1, num + str(i))backTracking(0, '') 백트래킹이라고 부르기도 좀 민망하긴 하다. 이전 N과 M 문제를 풀면서 올라왔다면 매우 쉽게 풀 것이다. 그냥 1 ~ N 까지의 수, M 길이를 가지는 모든 수열을 출력하면 된다.visited를 사용할 필요도 없..

[Baekjoon 15650 / Python / 실버3] N과 M (2)

# 우선 모든 경우의 수 수열을 만드는 코드를 짠다# depth가 0일 땐 바로 재귀 돌린다# depth가 0이 아니라면 "이전 숫자와 비교해 더 클 경우" 재귀 돌린다# num은 str 형태로 전달되며, 비교할 때만 int로 변환해 비교한다# 수열이 완성되면 str형태의 num을 중간에 공백을 추가해서 result 리스트에 담는다# result 리스트의 완성된 수열들을 차례로 출력한다import sysinput = sys.stdin.readline# 1 ~ N 까지의 수 / M개를 고른다N, M = map(int, input().split())visited = [False] * (N + 1) # 수와 인덱스를 맞추기 위해 + 1 한다result = []# 조건 검사 함수def compare(a, b):..

[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)에서 정점들을 순서대로 나열하는 알고리즘. “선후관계를 만족하는 정점의 순서”를 찾는다. - 순서가 정해져 있..

728x90
반응형