[BOJ] 11729 하노이 탑 이동 순서 (Python, Recursion) 🌱 문제 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 🌱 풀이 바킹독님의 알고리즘 강의 영상의 풀이법을 참고했습니다. 우선, 아래 그림처럼 n번째 원판을 1번 장대에서 3번 장대로 옮기기 위한 과정을 생각해보겠습니다. 1. n-1개의 원판을 1번에서 2번 장대로 옮긴다. 2. n번 원판을 1번에서 3번 장대로 옮긴다. 3. n-1개의 원판을 2번에서 3번 장대로 옮긴다. 이를 귀납적으로 설명하면, 원판 n-1개를 장대 a번에서 장대 b번으로 옮길 수 있다면, 원판 n개를 장대 a'에서 장대 b'.. [프로그래머스] 광물 캐기 (Python, 구현) 🌱 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작업을 끝내기까지 필요한 최소한의 피로도를 구하는 문제 광물을 모두 캐거나 곡갱이를 모두 사용하면 작업 끝남 어떤 광물을 어떤 곡갱이로 캐는지에 따라 소모되는 피로도가 다름 하나의 곡갱이로 5개의 광물을 캘 수 있음 🌱 풀이1 완전 탐색 → 시간 초과 처음에는 곡갱이(picks)의 개수가 최대 15개 이고, 광물(minerals)의 길이는 최대 50이라 완전탐색으로 풀 수 있겠다고 생각하였습니다. 왜냐하면 곡갱이 1개당 광물 5개를 캘 수 있으므로 최대로 필요한 곡갱이 수는 10개입니다. 또, 곡갱이.. [프로그래머스] 과제 진행하기(Python, Stack, Implementation) 🌱 문제 https://school.programmers.co.kr/learn/courses/30/lessons/176962?language=python3# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🌱 풀이 1. 문자열로 받는 시간 정보를 처리 후, 정렬 for plan in plans: hh, mm = plan[1].split(":") plan[1] = int(hh) * 60 + int(mm) plan[2] = int(plan[2]) plans.sort(key=lambda x: x[1]) plans에 시작 시간과 소요 시간이 모두 문자열로 주어지므.. [프로그래머스] 전력망을 둘로 나누기 (Python, BFS, 완전탐색) 🌱 문제 https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🌱 풀이 n은 2 이상 100 이하인 자연수이고 wires는 길이가 n-1인 2차원 배열로, 시간복잡도가 $O(100^2)$을 넘지 않으므로 (n-1 배열 탐색($O(N)$) * BFS 시간복잡도($O(N)$)) 완전 탐색을 이용해서 풀이합니다. 1. 전력망(graph) 정보를 2차원 리스트 형태로 표현하기 graph = [[] for _ in range(n + 1)] for wire i.. [프로그래머스] 퍼즐조각 채우기 (Python, BFS, 구현) 🌱 문제 BFS/DFS 문제이지만 개인적으로 BFS 찔끔 쓰고, 완전 빡쎈 구현인 것 같았던.. 문제입니다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🌱 풀이 1. game_board의 빈 공간과 table의 퍼즐 정보를 저장 우선, game_board에서 빈공간과 table에서 퍼즐들의 정보를 알아야 합니다. 즉, game_board에서는 0의 위치, table에서는 1의 위치를 알아야합니다. game_board의 인접한 0들은 하나의 퍼즐이 들어갈 수 있는 하나의 빈공간으로 취급하고, table에서 인접한 1은 하나의 퍼즐이므로 BFS 알고리즘을.. 파이썬으로 구현하는 다양한 소수 판별 알고리즘 (완전탐색부터 에라토스테네스의 체까지) 파이썬으로 소수를 찾는 알고리즘 3가지에 대해 알아봅시다. 1. 완전 탐색 방법 첫번째 방법은 완전 탐색 방법으로 소수인지 판별하는 방법입니다. 소수는 1과 자기 자신만을 약수로 갖는 수이기 때문에 2부터 자기 자신보다 1작은 수까지 모두 나누어보며 나누어 떨어지는지 확인하면 소수인지 알 수 있습니다. # 1. 완전 탐색 방법 def is_prime_number(x): for i in range(2, x): if x % i == 0: return False return True 이 알고리즘을 사용하면 시간복잡도는 $O(N)$입니다. 2부터 N-1까지 반복문을 돌면서 판별하기 때문입니다. 2. 제곱근까지만 확인해보자 두번째 방법은 약수끼리 대응시켜 곱했을 때 결국 자기 자신이 나온다는 점을 이용한 알고리즘.. [BOJ] #1697 숨바꼭질 (Python, BFS, 메모리 초과 문제 해결) 💡 문제 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 💡 풀이 처음에는 단순히 간단한 BFS 문제라고 생각하여 아래와 같이 코드를 작성했더니 메모리 초과가 났습니다. 그 이유는 n과 k가 100,000까지 될 수 있는데, while문을 돌면서 queue가 계속 3배가 되기 때문입니다. # !/usr/bin/env python # -*- coding: utf-8 -*- # boj 1697 숨바꼭질 import sys from collections import deque input .. [프로그래머스] 아이템줍기 (Python, Graph, BFS) 💡문제 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/87694 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제는 아래와 같이 여러개의 사각형 정보(좌하단 좌표와 우상단 좌표)가 주어졌을 때 테두리를 따라 다각형 모양 지형이 만들어지고, 그 위에 캐릭터의 위치와 아이템의 위치가 주어졌을 때 아이템까지의 최단 거리를 구하는 문제입니다. 💡풀이 문제를 풀기 위해서는 두가지 과정이 필요합니다. 1. 테두리를 따라 게임 맵을 만들어야하고, 2. 그 테두리를 따라 최단거리를 구하면 됩니다. .. Spring Boot와 GCS(Google Cloud Storage) 연동하여 파일 업로드 구현하기 (Sprint WebFlux에서 파일업로드, FilePart) 오늘은 Google Cloud Storage를 이용해서 파일을 업로드, 다운로드하는 API를 만들어보겠습니다. 1. 버킷 생성하기 먼저 파일을 업로드하고 다운로드할 버킷을 생성하겠습니다. 버킷이란, Google Cloud에서 객체를 저장하는 컨테이너입니다. Google Cloud 웹 콘솔(https://console.cloud.google.com)에서 프로젝트를 생성한 후, 해당 프로젝트에서 Cloud Storage > 버킷을 클릭합니다. 저는 capstone-design이라는 프로젝트에서 버킷을 만들도록 하겠습니다. 들어가서 버킷 만들기 버튼을 클릭하면 버킷 이름, 데이터 저장 위치, 객체(모든 형식의 파일) 접근/보호 방법을 설정한 후, 버킷을 생성할 수 있습니다. 그리고 나서 버킷에 접근하기 위한 .. GCP credit 받고 무료로 GPU 사용하기 딥러닝 프로젝트와 산업공학과 졸업작품 개발로 GPU를 사용해야 할 일이 많았는데 GCP(Google Cloud Platform)를 사용해서 땡전한푼 안들이고 GPU를 사용하고 있습니다 😗 GCP에서는 90일동안 $300의 크레딧을 받아서 사용할 수 있는데요, 이걸로 무료로 인스턴스를 할당받고 GPU를 사용하는 방법을 알아보겠습니다! 1. GCP 계정 생성 우선, GCP를 한 번도 사용하지 않은 계정이 필요합니다. (본인 인증 과정은 따로 없이 이메일 인증만 거치므로 GCP를 한 번도 사용하지 않은 계정이기만 하면 됩니다! 저는 세번째 계정 새로 파서 사용하는 중입니다..🫠) 그러면 위와 같이 무료 체험판 크레딧이 생깁니다. 300달러 준다고 되어있는데, 그것보다 좀 더 많은 크레딧이 채워져 있습니다. 2.. [Flutter] 기본적인 UI 만들기 (Feat. 플러터의 미친 개발 환경) 한이음 프로젝트에서 플러터를 이용해서 모바일 앱 개발을 기획하고 있어서 종강을 하고 플러터를 공부하고 있습니다. 노마드 코더의 무료 강의로 공부를 하고 있는데, 강의 내용이 정말 좋아서 따라하면서 배우기 쉬운 것 같습니다. 이 글에서는 제가 처음 플러터를 공부하면서 느꼈던 장점들과 플러터로 기본적인 UI를 만드는 방법들에 대해 작성해보려 합니다. Flutter 로 웹툰 앱 만들기 – 노마드 코더 Nomad Coders Flutter for Beginners nomadcoders.co 아래는 노마드 코더의 강의를 보며 따라서 만들어본 간단한 UI입니다. StatelessWidget으로만 구성되어 아직 기능은 없습니다. 이 글에서는 StatelessWidget으로 만드는 간단한 UI 그리는 방법들과 제가 경.. 🎯 1시간 안에 다트 뽀개볼래? 다트(Dart)는 구글에서 만든 객체 지향 언어입니다. 플러터를 사용하기 위해서는 다트 언어를 사용해야 합니다.. 우리가 다트를 배우는 유일한 이유입니다...👀 이 글은 다트를 한시간안에 뽀갤 수 있는 글입니다! 🎯 ㄱㄱ Dart programming language Dart is a client-optimized language for fast apps on any platform dart.dev 🎯 다트의 특징 1. Optimized for UI 다트는 async-await를 제공하여 User Interface를 만드는 데에 최적화되어 있습니다. 또한, 다트의 문법은 UI 구성 요소를 표현하기에 매우 최적이라고 합니다. 2. Productive development 개발 생산성을 올리는 다트의 특징은.. 이전 1 2 3 4 5 ··· 16 다음