728x90

전체 글 374

[백준/BOJ] gold3 - 11779번 최소비용 구하기2 (Python)

▶11779 - 최소비용 구하기2 ▶문제 n(1≤n≤1,000) 개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 m(1≤m≤100,000) 개의 버스가 있다. 우리는 A번째 도시에서 B번째 도시까지 가는데 드는 버스 비용을 최소화시키려고 한다. 그러면 A번째 도시에서 B번째 도시까지 가는데 드는 최소비용과 경로를 출력하여라. 항상 시작점에서 도착점으로의 경로가 존재한다. ▶입력 첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 주어진다. 그리고 그다음에는 도착지의 도시 번호가 주어지고 또 그 버스 비..

BOJ Code/Gold 2023.07.27

[백준/BOJ] gold5 - 14719번 빗물 (Python)

▶14719 - 빗물 ▶문제 2차원 세계에 블록이 쌓여있다. 비가 오면 블록 사이에 빗물이 고인다. 비는 충분히 많이 온다. 고이는 빗물의 총량은 얼마일까? ▶입력 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0 이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치부터 차례대로 W개 주어진다. 따라서 블록 내부의 빈 공간이 생길 수 없다. 또 2차원 세계의 바닥은 항상 막혀있다고 가정하여도 좋다. ▶출력 2차원 세계에서는 한 칸의 용량은 1이다. 고이는 빗물의 총량을 출력하여라. 빗물이 전혀 고이지 않을 경우 0을 출력하여라. ▶풀이 처음에는 그냥 모두 확인하는 방식으로 풀었다. 당연히 시간 ..

BOJ Code/Gold 2023.07.26

[Programmers - SQL] level2 - 중복 제거하기 : SUM, MAX, MIN

▶중복 제거하기 (SQL) : SUM, MAX, MIN (level 2) ▶문제 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해 주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다. ▶예시 예를 들어 ANIMAL_INS 테이블이 다음과 같다면 보호소 들어온 동물의 이름은 ..

[DRF] Django REST Framework란?

기본적으로 Django에 대해서만 다뤄봤고 할 줄 알았다. 현장실습생으로 업무를 진행하면서 django REST framework에 대해서 처음 들었다. 나는 그냥 백엔드를 구축하기 위해서는 Django만 알아도 된다고 생각했는데, 그게 아니었다. ▶Django REST Framework란? - Django를 기반으로 REST API를 만들기 위한 라이브러리이다. - Django는 자체적은 웹 템플릿에 데이터를 전달한다. - DRF는 다양한 플랫폼의 클라이언트에게 데이터를 전달한다. 순수 Django는 HTML에 응답하고 풀스택 개발이 목적이다. 하지만 JSON에 응답하는 DRF는 백엔드 API 서버 개발을 위한 목적으로 사용된다. ▶DRF 설치 그냥 django에 몇 가지만 추가해 주면 된다. 먼저 명..

Back-End 2023.07.20

[백준/BOJ] diamond5 - 18185번 라면 사기 (Small) (Python)

▶18185 - 라면 사기 (Small) ▶문제 라면마니아 교준이네 집 주변에는 N개의 라면 공장이 있다. 각 공장은 1번부터 N번까지 차례대로 번호가 부여되어 있다. 교준이는 i번 공장에서 정확하게 Ai개의 라면을 구매하고자 한다(1 ≤ i ≤ N). 교준이는 아래의 세 가지 방법으로 라면을 구매할 수 있다. i번 공장에서 라면을 하나 구매한다(1 ≤ i ≤ N). 이 경우 비용은 3원이 든다. i번 공장과 (i+1)번 공장에서 각각 라면을 하나씩 구매한다(1 ≤ i ≤ N-1). 이 경우 비용은 5원이 든다. i번 공장과 (i+1)번 공장, (i+2)번 공장에서 각각 라면을 하나씩 구매한다(1 ≤ i ≤ N-2). 이 경우 비용은 7원이 든다. 최소의 비용으로 라면을 구매하고자 할 때, 교준이가 필요..

BOJ Code/Diamond 2023.07.20

[Programmers] level1 - 개인정보 수집 유효기간 (Python) : 2023 KAKAO BLIND RECRUITMENT

▶개인정보 수집 유효기간 - 2023 KAKAO BLIND RECRUITMENT (level 1) ▶문제 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야 할 개인정보입니다. 당신은 오늘 날짜로 파기해야 할 개인정보 번호들을 구하..

[백준/BOJ] silver2 - 4963번 섬의 개수 (Python)

▶4963 - 섬의 개 ▶문제 정사각형으로 이루어져 있는 섬과 바다 지도가 주어진다. 섬의 개수를 세는 프로그램을 작성하시오. 한 정사각형과 가로, 세로 또는 대각선으로 연결되어 있는 사각형은 걸어갈 수 있는 사각형이다. 두 정사각형이 같은 섬에 있으려면, 한 정사각형에서 다른 정사각형으로 걸어서 갈 수 있는 경로가 있어야 한다. 지도는 바다로 둘러싸여 있으며, 지도 밖으로 나갈 수 없다. ▶입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도가 주어진다. 1은 땅, 0은 바다이다. 입력의 마지막 줄에는 0이 두 개 주어진다. ▶출력 각 테스트 케이스에 ..

[해외축구] "Manchester is blue" 맨체스터 시티 트레블 달성

챔스 4강 2차전과 결승 리뷰를 작성하지 못했다. 한동안 너무 바쁘게 살아와서 블로그 포스팅 작성을 놓치고 말았다. 하지만 더욱 좋은 소식을 가지고 블로그를 작성할 수 있어서 굉장히 기쁘다. 바로 맨체스터 시티 트레블 달성이다. 중학교 1학년때 조하트 골키퍼가 좋아서 맨시티를 좋아하게 됐고, 드디어 22-23 시즌에 트레블이라는 대업을 달성하게 됐다. 챔피언스리그 결승 시작 전 리그 우승, FA컵 우승으로 더블을 달성하고, 챔스 우승으로 마무리를 지었다. ▶22-23 시즌 챔피언스 리그 우승 (트레블 달성)맨체스터 시티의 첫 챔피언스 리그 우승이다. 첫 우승과 함께 트레블이라는 대업을 달성했다. 펩 과르디올라 감독은 유럽 역대 최초 다른 팀으로 트레블 2회 달성한 감독이 되었다.맨시티에게 한 가지 부족한..

[백준/BOJ] platinum3 - 16930번 달리기 (Python)

▶16930 - 달리기 오랜만에 플래티넘 문제를 풀고 싶어서 쉬워 보이는 걸로 골랐다. 플래티넘3 문제지만 그렇게 어렵진 않았고, 플5 정도로 느껴졌다. ▶문제 진영이는 다이어트를 위해 N×M 크기의 체육관을 달리려고 한다. 체육관은 1 × 1 크기의 칸으로 나누어져 있고, 칸은 빈칸 또는 벽이다. x행 y열에 있는 칸은 (x, y)로 나타낸다. 매 초마다 진영이는 위, 아래, 오른쪽, 왼쪽 중에서 이동할 방향을 하나 고르고, 그 방향으로 최소 1개, 최대 K개의 빈칸을 이동한다. 시작점 (x1, y1)과 도착점 (x2, y2)가 주어졌을 때, 시작점에서 도착점으로 이동하는 최소 시간을 구해보자. ▶입력 첫째 줄에 체육관의 크기 N과 M, 1초에 이동할 수 있는 칸의 최대 개수 K가 주어진다. 둘째 줄부..

BOJ Code/Platinum 2023.07.18

[Django] 마이그레이션 초기화

장고로 하나둘씩 model을 만들고 있으니, 생각보다 수정할 일이 많았다. python manage.py makemigrations와 python manage.py migrate 이 두 가지로 해결되는 경우도 있었지만, migrate 하는 경우에 오류가 날 때도 많았다. 이럴 때는 마이그레이션을 초기화해야 한다고 한다. 예전엔 구글링 해서 하나하나 했겠지만, 요즘은 ChatGPT에서 물어보면 바로 알려준다.매번 물어볼 수는 없으니, 과정들을 기록으로 남기고자 한다. ▶데이터베이스까지 전부 초기화 1. 프로젝트 안에 모든 마이그레이션 파일을 삭제 migrations 폴더 전체를 삭제하면 안 된다. 폴더 안에 __init__.py 파일을 제외하고 나머지를 다 삭제하면 된다. 2. 현재 데이터베이스 드랍 3...

Back-End 2023.07.18

[백준/BOJ] gold3 - 16947번 서울 지하철 2호선 (Python)

▶16947 - 서울 지하철 2호선 ▶문제 서울 지하철 2호선은 다음과 같이 생겼다. 지하철 2호선에는 51개의 역이 있고, 역과 역 사이를 연결하는 구간이 51개 있다. 즉, 정점이 51개이고, 양방향 간선이 51개인 그래프로 나타낼 수 있다. 2호선은 순환선 1개와 2개의 지선으로 이루어져 있다. 한 역에서 출발해서 계속 가면 다시 출발한 역으로 돌아올 수 있는 노선을 순환선이라고 한다. 지선은 순환선에 속하는 한 역에서 시작하는 트리 형태의 노선이다. 두 역(정점) 사이의 거리는 지나야 하는 구간(간선)의 개수이다. 역 A와 순환선 사이의 거리는 A와 순환선에 속하는 역 사이의 거리 중 최솟값이다. 지하철 2호선과 같은 형태의 노선도가 주어졌을 때, 각 역과 순환선 사이의 거리를 구해보자. ▶입력 ..

BOJ Code/Gold 2023.07.17

[백준/BOJ] gold5 - 1083번 소트 (Python)

▶1083 - 소트 ▶문제 크기가 N인 배열 A가 있다. 배열에 있는 모든 수는 서로 다르다. 이 배열을 정렬할 때, 연속된 두 개의 원소만 교환할 수 있다. 그리고, 교환은 많아봐야 S번 할 수 있다. 이때, 정렬한 결과가 사전순으로 가장 뒷서는 것을 출력한다. ▶입력 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 원소가 차례대로 주어진다. 이 값은 1000000보다 작거나 같은 자연수이다. 마지막 줄에는 S가 주어진다. S는 1000000보다 작거나 같은 음이 아닌 정수이다. ▶출력 첫째 줄에 문제의 정답을 출력한다. ▶풀이 최댓값을 찾아서 가장 왼쪽으로 넣어주는 방식을 사용하기로 했다. 최댓값이 들어간 가장 좌측 index는 고정시키는 방식이다. 일단 i번째부터 ..

BOJ Code/Gold 2023.07.14

[백준/BOJ] gold5 - 12904번 A와 B (Python)

요즘 들어 굉장히 바쁜 날들을 살아오고 있다. 졸업 요건을 채우기 위해서 현장실습 인턴을 진행 중이고, 생각보다 주어진 업무가 많아서 쉴틈이 없다. 집에 오면 지쳐서 계속 쉬어서, 브론즈 문제만 풀면서 스트릭을 채웠다. 오랜만에 골드 문제도 풀었고 해서 블로그도 오랜만에 글을 써본다. ▶12904 - A와 B ▶문제 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다. 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다. 문자열..

BOJ Code/Gold 2023.07.09

[인공지능] 10장. 생성 모델(Generative Model) 3

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. ▶10.3 생성 적대 신경 10.3.2 생성 적대 신경망의 프로그래밍 MNIST를 가지고 GAN을 구현하는 코드 import numpy as np from tensorflow.keras.datasets import mnist from tensorflow.keras.layers import Input,Activation,Dense,Flatten,Reshape,Conv2D,Conv2DTranspose,Dropout,BatchNormalization,UpSampling2D from tensorflow.keras.models impor..

[인공지능] 10장. 생성 모델(Generative Model) 2

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. ▶10.2 오토인코더 (Autoencoder) 오토인코더는 입력 패턴과 출력 패턴이 같은 신경망 (모양, 값 모두 같게) - 사람이 레이블을 달 필요가 없는 비지도 학습 - 고전적인 응용 : 영상 압축, 잡음 제거 등 - 딥러닝 응용 : 특징 추출 또는 생성 모델 (중간에 살짝 변형해 조금 다른 애를 출력한다.) 기본 아이디어 - 입력 데이터를 압축된 표현(representation) 또는 특징으로 인코딩(encoding) - 압축된 표현은 다시 원래 입력 형태로 디코딩(decoding) 오토인코더 학습 - 입력과 출력의 차이를..

[인공지능] 10장. 생성 모델(Generative Model) 1

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. 인간의 생성 능력 - ex. 아이는 오늘 겪은 일을 아빠에게 이야기하고, 처음 가본 곳의 풍경을 그림으로 그린다. - 현실 세계를 비슷하게 모방하지만 같지는 않다.(의도적 왜곡, 도구 한계로 추상화 등) 생성 모델 - 레이블 별 데이터 분포를 이해하고, 새로운 데이터를 만들 수 있는 모델 - DALL-E, ChatGPT 판별 모델 - 데이터를 레이블에 맞춰 나누는 (분류) 모델 - 영상 분류 모델, 번호판 인식기, 구글 검색 ▶생성 모델과 판별 모델 판별 모델 - 가족의 얼굴을 알아보고 표정을 보고 상대의 감정을 알아보는 등의 ..

[인공지능] 9장. 강화 학습(Reinforcement Learning) 3

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. ▶9.3 동적 프로그래밍 (Dynamic Programming 9.3.2 가치 반복 알고리즘 동적 프로그래밍은 부트스트랩(bootstrap) 방식 - 모든 상태가 부정확한 값으로 출발하여 이웃 상태와 정보를 주고받으며 점점 수렴해 가는 방식 - ex. FrozenLake에서는 목적지에 인접한 상태부터 정확해져서 점점 멀리 확산 - 부트스트랩 : agent가 자체적으로 가치 함수나 q-value 함수를 업데이트하는 것 - 당장의 보상과 이웃 상태에서의 가치 함숫값이나 q-value 함숫값을 이용 - 이웃 상태(neighbor st..

[백준/BOJ] gold3 - 14442번 벽 부수고 이동하기 2 (Python)

▶14442 - 벽 부수고 이동하기 2 ▶문제 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다. 만약에 이동하는 도중에 벽을 부수고 이동하는 것이 좀 더 경로가 짧아진다면, 벽을 K개까지 부수고 이동하여도 된다. 한 칸에서 이동할 수 있는 칸은 상하좌우로 인접한 칸이다. 맵이 주어졌을 때, 최단 경로를 구해 내는 프로그램을 작성하시오. ▶입력 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000),..

BOJ Code/Gold 2023.06.03

[인공지능] 9장. 강화 학습(Reinforcement Learning) 2

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. ▶9.2 9.2.2 최적 정책 학습 알고리즘이 해야 할 일 - '누적(최종) 보상'을 최대화하는 '최적 정책'(optimal policy)을 알아내야 한다. - 최적 정책이란? - ex. 다중 손잡이 밴딧에서 승률이 가장 높은 4번 손잡이를 당기는 정책 - ex. Fronzenlake에서 상태 4에서 행동 1을 취해 안전한 길을 찾는다. 확률 분포로 표현되는 정책 9.2.3 가치 함수로 찾는 최적 정책 최적 정책(optimal policy)을 찾는 학습 알고리즘의 필요성 - 이전 예제에서는 최적 정책을 쉽게 찾았는데 문제가 단순..

[인공지능] 9장. 강화 학습(Reinforcement Learning) 1

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. 컴퓨터로 이런 방식의 학습을 할 수 있을까? - 지금까지 공부한 지도 학습(다층 퍼셉트론, 컨볼루션 신경망, 순환 신경망)은 부적절하다. - 입력/환경 정보를 한 번에 또는 순차적으로 넣고 결과를 확인하는 방법이다. - 중간에 입력/환경 정보가 바뀌지는 않는다. (은닉층은 바뀔 수 있다.) - 대안이 필요하다. 강화 학습(Reinforcement Learning) - Reinforcement : 보상과 처벌을 통해 행동을 형성하는 과정 (심리학/행동) - 보상 또는 페널티와 같은 피드백으로 에이전트의 학습 과정을 돕는 방법이다...

728x90