tmvmffpsej의 등록된 링크

 tmvmffpsej로 등록된 네이버 블로그 포스트 수는 112건입니다.

프로그래머스 12921 소수 찾기 파이썬 [내부링크]

문제 설명 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 1000000이하의 자연수입니다. 입출력 예 n result 10 4 5 3 입출력 예 설명 입출력 예 #1 1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환 입출력 예 #2 1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환 코드 처음에는 입력된 수 n까지로 입력을 받아 소수를 검사했는데 이렇게 하면 시간초과가 뜨는 것을 확인했다. n의 제곱근 까지만 구하도록 만들어 사용했다. import math def prime(n): for k in range(2, int(math.sqrt(n))+1): if n%k == 0: return False return True def solution(n): answer = 0 for i in

프로그래머스 소수만들기 12977 파이썬 [내부링크]

문제 설명 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. 제한사항 nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다. 입출력 예 nums result [1,2,3,4] 1 [1,2,7,6,4] 4 코드 list에서 3개씩 뽑도록 3중 for문 사용해 값들을 추출해서 더한 다음 해당 값을 소수판별해서 count 하도록 만들었다. def prime(n): for i in range(2, n): if n%i == 0: return False return True def solution(nums): answer = 0 for i in range(le

프로그래머스 142086 가장 가까운 같은 글자 파이썬 [내부링크]

문제 설명 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다. n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다. a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다. 이 중 가까운 것은 두 칸 앞이고, 이는 2로 표현합니다. 따라서 최종 결과물은 [-1, -1, -1, 2, 2, 2]가 됩니다. 문자열 s이 주어질 때, 위와 같이 정의된

OpenCV 영상, 음원 녹화 파이썬 [내부링크]

OpenCV에서 영상은 녹화할 수 있지만 음원은 따로 녹화가 불가능 하다 그래서 음원을 외부 라이브러리를 통해 녹화를 진행하고 영상과 음원을 서로 합쳐야 비로소 제대로된 영상 녹화가 가능하다. 코드 import cv2 # opencv import datetime # 파일이름 import pyaudio # 오디오 녹화 import wave # 오디오 녹화 import numpy as np # 오디오 녹화 from moviepy.editor import * # 비디오 오디오 합성 import time # 지연 import threading # 웹캠 객체 지정 및 사이즈 적용 cap = cv2.VideoCapture(0) width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 녹화 파일 저장 위치 path = './record/' # 영상 fourcc = cv2.Vide

OpenCV faiss를 이용한 유사 이미지 검색 프로그램 [내부링크]

이미지의 특징점을 추출하여 faiss를 이용해 계산해서 입력이미지와 유사한 이미지를 찾는 프로그램, 특징점의 오차가 0에 가까울 수록 비슷하고 멀 수록 다르다. 코드 import cv2 import numpy as np import faiss # vlad 계산 def compute_vlad(image, des, labels, centers): sift = cv2.SIFT_create(edgeThreshold=80) _, des = sift.detectAndCompute(image, None) if des is None: return None vlad = np.zeros((centers.shape[0], des.shape[1]), dtype=np.float32) for i in range(des.shape[0]): vlad[labels[i]] += des[i] - centers[labels[i]] vlad = cv2.normalize(vlad, None).flatten() vlad /

OpenCV SIFT와 BFMATCHER를 이용한 유사 이미지 검색 [내부링크]

SIFT로 특징점을 추출하여 BFMATCHER를 통해 계산해서 입력 영상과 비슷한 이미지를 출력하는 프로그램 코드 import cv2 import numpy as np imgSize = (300, 300) # num_results 출력할 비슷한 이미지 개수 def detect_similar_images(query_image_path, database_image_paths, num_results=5): # Load the query image query_image = cv2.imread(query_image_path, cv2.IMREAD_GRAYSCALE) query_image = cv2.resize(query_image, imgSize) # Create the feature detector (SIFT) sift = cv2.xfeatures2d.SIFT_create() # Detect keypoints and compute descriptors for the query image qu

OpenCV Sobel, Laplacian 을 이용한 화질 개선 프로그램, 파이썬 [내부링크]

Sobel, Laplacian을 이용해 화질을 개선한다. 사용한 라이브러리 import cv2 import numpy as np from matplotlib import pyplot as plt a 화질 개선할 이미지 입력 # a # 원본 이미지 불러오기 img = cv2.imread('c:/data/moon2.jpg', cv2.IMREAD_GRAYSCALE) # img = cv2.resize(img, (350, 350)) # 사진 크기 조절 b 라플라시안 적용 # 원본에 가우시안 흐림 처리 blur_g = cv2.GaussianBlur(img, ksize=(3, 3), sigmaX=0.0) # b # 라플라시안 함수 사용 # 원본에 라플라시안 바로 적용, 블러 처리한 이미지 보다 미분 오차 증가 laplacian = cv2.Laplacian(img, cv2.CV_8U) # laplacian = cv2.Laplacian(img, cv2.CV_32F) # laplacian = np.u

안드로이드 스튜디오 카카오맵 api 연동 안드로이드 12버전 이상에서 사용 가능하도록 수정 [내부링크]

안드로이드 12 버전 이상에서 사용 가능하도록 수정 https://apis.map.kakao.com/android/guide/#step2 Kakao 지도 API Kakao 지도 API를 이용해보세요. 다양한 샘플과 상세한 매뉴얼로 개발자분들의 시간을 아껴드리겠습니다! apis.map.kakao.com https://developers.kakao.com/ Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com sdk를 다운로드 하여 압축을 해제해서 아래와 같은 디렉토리 위치에 파일들을 저장 꼭 jniLibs 라는 이름의 디렉토리에 넣어줘야 한다. manifest 추가 문서에 나와있는대로 하면 제대로 작동하지 않으므로 아래의 코드들을 추가해줘야 한다. <!-- 카카오맵 권한 추가 --> <uses-permission android:na

NavigationBarView 23년 이후 부터 사용 법 변경 [내부링크]

https://developer.android.com/reference/com/google/android/material/bottomnavigation/BottomNavigationView.OnNavigationItemSelectedListener BottomNavigationView.OnNavigationItemSelectedListener | Android Developers Android Developers Docs Reference 이 페이지의 내용 Summary Inherited methods BottomNavigationView . OnNavigationItemSelectedListener Stay organized with collections Save and categorize content based on your preferences. public static interface BottomNavigationView.OnNavigationItemSelectedList

vscode로 자바 사용하는 법 [내부링크]

사용한 jdk: zulu java 17 (LTS) 인터넷에서 나오는 내용중에 vscode를 이용해 자바를 제대로 사용하는게 많이 있지 않아서 올림 https://youtu.be/mhvwT5ZnAxc

자바 기본 타입 변수 범위 출력 [내부링크]

자바 기본 타입 변수 범위 출력 int, long, float, byte, char, short, double 타입들의 범위 public class Example4 { public static void main(String[] args) { // 기본타입 변수의 최소값과 최대값 출력 System.out.println("int 범위: " + Integer.MIN_VALUE+"~"+Integer.MAX_VALUE); System.out.println("long 범위: " + Long.MIN_VALUE+"~"+Long.MAX_VALUE); System.out.println("float 범위: " + Float.MIN_VALUE+"~"+Float.MAX_VALUE); System.out.println("byte 범위: " + Byte.MIN_VALUE+"~"+Byte.MAX_VALUE); // System.out.println("char 범위: " + Integer.toHexString(C

백준 1269 대칭 차집합 파이썬 [내부링크]

문제 자연수를 원소로 갖는 공집합이 아닌 두 집합 A와 B가 있다. 이때, 두 집합의 대칭 차집합의 원소의 개수를 출력하는 프로그램을 작성하시오. 두 집합 A와 B가 있을 때, (A-B)와 (B-A)의 합집합을 A와 B의 대칭 차집합이라고 한다. 예를 들어, A = { 1, 2, 4 } 이고, B = { 2, 3, 4, 5, 6 } 라고 할 때, A-B = { 1 } 이고, B-A = { 3, 5, 6 } 이므로, 대칭 차집합의 원소의 개수는 1 + 3 = 4개이다. 입력 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어진다. 각 집합의 원소의 개수는 200,000을 넘지 않으며, 모든 원소의 값은 100,000,000을 넘지 않는다. 코드 파이썬 set의 집합 연산을 이용 a, b = map(int, input().split()) se

백준 25192 인사성 밝은 곰곰이 파이썬 [내부링크]

문제 알고리즘 입문방 오픈 채팅방에서는 새로운 분들이 입장을 할 때마다 곰곰티콘을 사용해 인사를 한다. 이를 본 문자열 킬러 임스는 채팅방의 기록을 수집해 그 중 곰곰티콘이 사용된 횟수를 구해 보기로 했다. ENTER는 새로운 사람이 채팅방에 입장했음을 나타낸다. 그 외는 채팅을 입력한 유저의 닉네임을 나타낸다. 닉네임은 숫자 또는 영문 대소문자로 구성되어 있다. 새로운 사람이 입장한 이후 처음 채팅을 입력하는 사람은 반드시 곰곰티콘으로 인사를 한다. 그 외의 기록은 곰곰티콘을 쓰지 않은 평범한 채팅 기록이다. 채팅 기록 중 곰곰티콘이 사용된 횟수를 구해보자! 입력 첫 번째 줄에는 채팅방의 기록 수를 나타내는 정수 이 주어진다. ( 1≤≤100000 ) 두 번째 줄부터 개의 줄에 걸쳐 새로운 사람의 입장을 나타내는 ENTER, 혹은 채팅을 입력한 유저의 닉네임이 문자열로 주어진다. (문자열길이 1≤문자열 길이≤20 ) 첫 번째 주어지는 문자열은 무조건 ENTER이다. 코드 set

백준 1735 분수의 합 파이썬, 라이브러리 사용x [내부링크]

문제 분수 A/B는 분자가 A, 분모가 B인 분수를 의미한다. A와 B는 모두 자연수라고 하자. 두 분수의 합 또한 분수로 표현할 수 있다. 두 분수가 주어졌을 때, 그 합을 기약분수의 형태로 구하는 프로그램을 작성하시오. 기약분수란 더 이상 약분되지 않는 분수를 의미한다. 입력 첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다. 코드 대부분의 사람들이 사용한 방식은 라이브러리를 사용한 방식이다. 근데 라이브러리를 사용하는 방식은 코딩테스트 할 때 사용하지 못 할 수도 있어서 라이브러리를 사용하지 않는 버전으로 만들어서 올린다. x1, x2 = map(int, input().split()) y1, y2 = map(int, input().split()) r2 = x2*y2 r1 = (x1*y2) + (y1*x2) # 기약분수 만들기 def reduce(bunja, bunmo): if bunja%

백준 26069 붙임성 좋은 총총이 파이썬 [내부링크]

문제 총총이는 친구 곰곰이의 소개로 제2회 곰곰컵에 출연할 기회를 얻었다! 총총이는 자신의 묘기인 무지개 댄스를 선보여, 여러분의 환심을 사려 한다. 이 댄스는 중독성이 강하기 때문에, 한번 보게 된 사람은 모두 따라 하게 돼버린다. 사람들이 만난 기록이 시간 순서대로 개 주어진다. (총총이는 토끼이지만 이 문제에서는 편의상 사람이라고 가정한다.) 무지개 댄스를 추지 않고 있던 사람이 무지개 댄스를 추고 있던 사람을 만나게 된다면, 만난 시점 이후로 무지개 댄스를 추게 된다. 기록이 시작되기 이전 무지개 댄스를 추고 있는 사람은 총총이 뿐이라고 할 때, 마지막 기록 이후 무지개 댄스를 추는 사람이 몇 명인지 구해보자! 코드 나는 입력된 사람의 이름이 ChongChong 이거나 총총이와 만난 사람이라면 건너편의 사람이 set에 추가될 수 있도록 만들어서 set의 개수를 출력하는 방식으로 만들었다. # 붙임성 좋은 총총이 s = set() # 춤추는 사람을 넣을 set n = int(i

졸업작품, OpenCV 파이썬을 이용한 필터카메라 [내부링크]

한 학기 동안 혼자서 진행한 프로젝트 코드 설명 사용한 라이브러리 import cv2 # opencv, 영상처리 import mediapipe as mp # mediopipe, 얼굴 인식 라이브러리 사용 import os # 파일 생성을 위해 사용 import datetime # 파일 이름을 지정하기 위해 그리고 최대 녹화시간을 카운트 하기 위해 사용 import pyaudio # 오디오 녹화 import wave # 오디오 녹화 import numpy as np # 오디오 연산, 표정 인식 얼굴 크기 계산 from moviepy.editor import * # 비디오, 오디오 합성 import time # 음성 파일이 생성 될 때 까지 delay 발생시키기 위해 사용 import threading # 쓰레드, 두 가지 이상의 일을 하기 위해 사용 (opencv를 이용한 영상처리, moviepy를 이용한 영상, 음성 합성 동시 처리) import dlib # 표정인식 from ker

프로그래머스 131701 연속 부분 수열 합의 개수 파이썬 [내부링크]

문제 설명 철호는 수열을 가지고 놀기 좋아합니다. 어느 날 철호는 어떤 자연수로 이루어진 원형 수열의 연속하는 부분 수열의 합으로 만들 수 있는 수가 모두 몇 가지인지 알아보고 싶어졌습니다. 원형 수열이란 일반적인 수열에서 처음과 끝이 연결된 형태의 수열을 말합니다. 예를 들어 수열 [7, 9, 1, 1, 4] 로 원형 수열을 만들면 다음과 같습니다. 원형 수열은 처음과 끝이 연결되어 끊기는 부분이 없기 때문에 연속하는 부분 수열도 일반적인 수열보다 많아집니다. 원형 수열의 모든 원소 elements가 순서대로 주어질 때, 원형 수열의 연속 부분 수열 합으로 만들 수 있는 수의 개수를 return 하도록 solution 함수를 완성해주세요. 제한사항 3 ≤ elements의 길이 ≤ 1,000 1 ≤ elements의 원소 ≤ 1,000 입출력 예 elements result [7,9,1,1,4] 18 입출력 예 설명 입출력 예 #1 길이가 1인 연속 부분 수열로부터 [1, 4, 7

프로그래머스 87390 n^2 배열 자르기 파이썬 [내부링크]

n^2 배열 자르기 darklight sublimevimemacs 문제 설명 정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부터 i행 i열까지의 영역 내의 모든 빈 칸을 숫자 i로 채웁니다. 1행, 2행, ..., n행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다. 새로운 1차원 배열을 arr이라 할 때, arr[left], arr[left+1], ..., arr[right]만 남기고 나머지는 지웁니다. 정수 n, left, right가 매개변수로 주어집니다. 주어진 과정대로 만들어진 1차원 배열을 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ n ≤ 107 0 ≤ left ≤ right < n2 right - left < 105 입출력 예 n left right

안드로이드 스튜디오 타이틀바 제거, manifest [내부링크]

manifest에 해당 코드 추가 android:theme="@style/Theme.AppCompat.NoActionBar" 넣는 부분 <activity android:name=".MainActivity" android:theme="@style/Theme.AppCompat.NoActionBar" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 실행 결과

kotlin 으로 firebase 연동하여 안드로이드 로그인, 회원가입 만들기 [내부링크]

코틀린으로 파이어베이스를 연동하는 정보가 부족하다고 판단하여 java 방식으로 배우면서 kotlin으로 변환하여 올린다. 1. firebase 설정 authentication과 realtime db에서 해당 구역을 눌러 step 1, 2를 실행 2. 웹페이지 firebase 들어가서 이메일, 비밀번호 로그인 설정 3. xml 및 kotlin 구현 3-1 로그인 이미지 xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" andro

SSAFY 삼성 SW 아카데미 10기 전공자 인터뷰 불합격 후기 [내부링크]

올 해 8월에 졸업 예정이라 5월 쯔음에 신청을 했다. 어쩌다 보니 시험 준비하는데 기말고사랑 겹쳐서 많은 시간을 이용해 준비하지 못했지만 인터뷰까지 가서 신기했다. 비록 인터뷰는 떨어졌지만 내가 여태 어떻게 준비했는지에 대해 쓰고자 한다. 기말고사 때문에 바빠서 실질적인 준비는 자소서, 코테 1주 / 인터뷰 1주 총합 2주 정도만 준비를 했었다. 자소서, 코테 준비 자소서는 잡코리아, 사람인의 기업 합격 자소서 등을 참고하면서 나만의 스타일로 작성하였고 코테는 1주일 밖에 준비는 안했지만 예전부터 백준이랑 프로그래머스를 간간히 했었어서 1주 정도 공부한 것도 충분했던것 같다. 참고로 나는 백준 gold4, 프로그래머스 100 문제 정도 풀었던 상태였으니 코테 못 한다고 하면 한 달 정도 공부하면서 준비하는 걸 추천, 자소서와 코테는 합격 코테는 문제가 2개 정도 주어졌는데 이전 문제를 제대로 풀어야 다음 문제를 풀 수 있는 형식이므로 안 넘어간다고 문의넣지 말자... 나는 1번 문

kotlin firebase를 이용한 구글 로그인 구현 android 11 이상 [내부링크]

코틀린과 파이어베이스를 사용해 구글 로그인을 구현하는 법이 안드로이드 11 이상부터 사용되는 코드가 변경되어 내가 해결한 방법을 공유하고자 올린다. 안드11 버전 이상 부터는 startActivityForResult 를 지원하지 않는다. 로그인 부분 사용자가 "Google로 로그인" 버튼을 클릭할 때 호출됩니다. 사용자의 이메일 및 ID 토큰 요청과 같은 원하는 인증 옵션을 지정하기 위해 GoogleSignInOptions 객체를 생성합니다. 옵션에 따라 GoogleSignInClient를 생성하고 로그인 의도를 얻습니다. 마지막으로 signInLauncher.launch(signInIntent)를 사용하여 로그인 인텐트를 시작합니다. private fun signInWithGoogle() { val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.stri

프로그래머스 135808 과일 장수 파이썬 [내부링크]

문제 설명 과일 장수가 사과 상자를 포장하고 있습니다. 사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. 사과 한 상자의 가격은 다음과 같이 결정됩니다. 한 상자에 사과를 m개씩 담아 포장합니다. 상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m 입니다. 과일 장수가 가능한 많은 사과를 팔았을 때, 얻을 수 있는 최대 이익을 계산하고자 합니다.(사과는 상자 단위로만 판매하며, 남는 사과는 버립니다) 예를 들어, k = 3, m = 4, 사과 7개의 점수가 [1, 2, 3, 1, 2, 3, 1]이라면, 다음과 같이 [2, 3, 2, 3]으로 구성된 사과 상자 1개를 만들어 판매하여 최대 이익을 얻을 수 있습니다. (최저 사과 점수) x (한 상자에 담긴 사과 개수) x (상자의 개수) = 2 x 4 x 1 = 8 사과의 최대 점수 k, 한 상자에 들어가는 사과의 수

프로그래머스 42586 기능개발 파이썬 [내부링크]

문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자연수입니다. 배포는 하루에 한 번만 할 수 있으며, 하루의 끝에 이루어진다고 가정합니다. 예를 들어 진도율이 95%인 작업의 개발 속도가 하루에 4%라면 배포는 2일 뒤에 이루어집니다

OpenCV 실시간 얼굴 표정 인식 파이썬 [내부링크]

필요 라이브러리 import cv2 import dlib import numpy as np from keras.models import load_model pip install opencv-python pip install dlib pip install numpy pip install tensorflow pip install keras dlib는 설치하기 전에 visual studio 와 cmake를 설치해줘야 설치된다. 둘 다 설치 안하고 설치하면 설치 안 됨 dlib 설치가 자세하게 적혀있는 곳 https://suy379.tistory.com/76 python dlib 설치하기 - anaconda dlib install error 안면 인식 기술로 활용되는 dlib 라이브러리. 설치하는데 너무 에러가 많이 떠서 이를 해결하기 위해 많은 삽질을 해보고 쓰는 글이다. 이대로만 따라하자! (그리고 나는 윈도우(Windows)를 사용하고 있다. 혹시 다른 운영체제를 사용 중이라면 안 맞

백준 1475 방 번호 파이썬 [내부링크]

문제 다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다. 다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.) 입력 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 필요한 세트의 개수를 출력한다. 해당 문제는 0~9까지 모든 수가 한 번에 나오고 중복되는 수는 계속 카운트 되는 것을 확인할 수 있는데 해당 문제를 통해 6, 과 9가 카운트를 공유 한 다는 것을 알 수가 있다. 그래서 이와같이 코드를 짜면 이렇게 나온다. # 방 번호 # 0~9 까지 cnt 넣을 리스트 cnt = [0] * 10 # 입력 n = int(input()) # 0 이 될 때까지 반

프로그래머스 12981 영어 끝말잇기 파이썬 [내부링크]

문제 설명 1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다. 이전에 등장했던 단어는 사용할 수 없습니다. 한 글자인 단어는 인정되지 않습니다. 다음은 3명이 끝말잇기를 하는 상황을 나타냅니다. tank → kick → know → wheel → land → dream → mother → robot → tank 위 끝말잇기는 다음과 같이 진행됩니다. 1번 사람이 자신의 첫 번째 차례에 tank를 말합니다. 2번 사람이 자신의 첫 번째 차례에 kick을 말합니다. 3번 사람이 자신의 첫 번째 차례에 know를 말합니다. 1번 사람이 자신의 두 번째 차례에 wheel을 말합니다. (계속 진행) 끝말잇기를 계속 진행해 나가다

프로그래머스 42842 카펫 파이썬 [내부링크]

문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다. 입출력 예 코드 def solution(brown, yellow): answer = [] n = brown+yellow div = [] # 약수 찾기 for i in rang

프로그래머스 147335 크기가 작은 부분 문자열 파이썬 [내부링크]

문제 설명 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다. 제한사항 1 ≤ p의 길이 ≤ 18 p의 길이 ≤ t의 길이 ≤ 10,000 t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다. 코드 예외 문으로 처리 def solution(t, p): answer = 0 t = list(t) for i in range(len(t)): s = '' try: for j in range(i, len(p)+i): s += t[j] n = int(s) if n <= int(p)

프로그래머스 42578 의상 파이썬 [내부링크]

문제 설명 코니는 매일 다른 옷을 조합하여 입는것을 좋아합니다. 예를 들어 코니가 가진 옷이 아래와 같고, 오늘 코니가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 코니는 각 종류별로 최대 1가지 의상만 착용할 수 있습니다. 예를 들어 위 예시의 경우 동그란 안경과 검정 선글라스를 동시에 착용할 수는 없습니다. 착용한 의상의 일부가 겹치더라도, 다른 의상이 겹치지 않거나, 혹은 의상을 추가로 더 착용한 경우에는 서로 다른 방법으로 옷을 착용한 것으로 계산합니다. 코니는 하루에 최소 한 개의 의상은 입습니다. 코니가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 코드 나는 딕셔너리에 value를 list

프로그래머스 120956 옹알이 1 파이썬 [내부링크]

문제 설명 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ babbling의 길이 ≤ 100 1 ≤ babbling[i]의 길이 ≤ 15 babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다. 즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다. 문자열은 알파벳 소문자로만 이루어져 있습니다. 입출력 예 babbling result ["aya", "yee", "u", "maa", "wyeoo"] 1 ["ayaye", "uuuma", "ye", "yem

프로그래머스 138476 귤 고르기 파이썬 [내부링크]

문제 설명 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. 예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다른 종류가 최소일 때입니다. 경화가 한 상자에 담으려는 귤의 개수 k와 귤의 크기를 담은 배열 tangerine이 매개변수로 주어집니다. 경화가 귤 k개를 고를 때 크기가 서로 다른 종류의 수의 최솟값을 return 하도록 solution 함수를 작성해주세요. 제한사항 1 ≤ k ≤ tangerine의 길이 ≤ 100,000 1 ≤ tangerine의

프로그래머스 42840 모의고사 파이썬 [내부링크]

문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한 조건 시험은 최대 10,000 문제로 구성되어있습니다. 문제의 정답은 1, 2, 3, 4, 5중 하나입니다. 가장 높은 점수를 받은 사람이 여럿일 경우, return

백준 1436 영화감독 숌 파이썬 [내부링크]

문제 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다. 종말의 수란 어떤 수에 6이 적어도 3개 이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 수는 666이고, 그 다음으로 큰 수는 1666, 2666, 3666, .... 이다. 따라서, 숌은 첫 번째 영화의 제목은 "세상의 종말 666", 두 번째 영화의 제목은 "세상의 종말 1666"와 같이 이름을 지을 것이다. 일반화해서

백준 18870 좌표 압축 파이썬 [내부링크]

문제 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다. 코드 딕셔너리 활용 n = int(input()) l = list(map(int, input().split())) s = set(l) s = sorted(s) d = {} r = 0 for i in s: d[i] = r # 딕셔너리에 해당 key에 값을 0부터 집어넣음 r+=1 for i in l: # 리스트에 들어있는 값을 key로 이용해 value 출력 print(d.get(i), end=' ')

백준 11478 서로 다른 부분 문자열의 개수 실버 3 파이썬 [내부링크]

문제 문자열 S가 주어졌을 때, S의 서로 다른 부분 문자열의 개수를 구하는 프로그램을 작성하시오. 부분 문자열은 S에서 연속된 일부분을 말하며, 길이가 1보다 크거나 같아야 한다. 예를 들어, ababc의 부분 문자열은 a, b, a, b, c, ab, ba, ab, bc, aba, bab, abc, abab, babc, ababc가 있고, 서로 다른것의 개수는 12개이다. 입력 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. 코드 문자열을 slice 하여 set에 저장해서 최종적으로는 set의 개수를 세는 방법으로 풀었다. n = 1 # 처음 slice 범위 st = input() # 입력 문자열 l = set() # 결과값 저장 set while n < len(st): for i in range(len(st)): c = st[i:i+n] # 문자열은 범위 벗어나도 오류 안뜸 l.add(c) n += 1 # 결과값 출력 # 원

실시간 시스템 1주차, 개념 [내부링크]

rts = 실시간 시스템 rts는 hard rts, soft rts으로 나눌 수 있다. hard rts는 deadline을 넘어서면 안되는 시스템의 일종이다. 무기제어, 원자력 발전 제어등 작업 완료에 대한 보장성과 시간적 서비스에 대한 예측성이 주어져야 하는 시스템이다. soft rts는 deadline을 넘어도 상관이 없는 시스템의 일종이다. 인터넷 방송을 예로 딜레이가 생겨도 조금 답답하지만 세상이나 주변에 위험에는 지장이 없는 시스템을 말한다. hard rts, soft rts는 periodic과 Aperiodic으로 나눌 수 있다. periodic은 주기적인 Aperiodic은 주기적이지 않은 이라는 뜻이다. (A가 not이라는 뜻을 함유) sporadic(sometime 이라는 뜻)은 Aperiodic과 연관이 있다. periodic과 Aperiodic은 Preemptive, Non-Preemptive로 나눌 수 있다. Preemptive의 공식 명칭은 선점이라는 단어인데

실시간 시스템 2주차 [내부링크]

스케줄링 판단 기준 CPU 사용률 Throughput (일정시간 동안 처리된 process(job)의 개수) Turnaround time (process(job)의 전체 처리 시간) Waiting time (process(job)가 처리되는 동안 기다린 시간) Response time (process(job)가 언제 시작해서 끝났는지를 보여주는 시간) hyperperiod H, number N of jobs H는 전체 주기들의 최대공약수로 구할 수 있다. N = (H/pi) 이다. 예제1: J1 => p = 6, J2 => p = 8 / H, N 구하기, p는 period (주기)의 약자이다. H = LCM(6, 8) = 24 N = (24/6) + (24/8) = 4 + 3 = 7 예제 2: p = (3, 4, 10) 일때 H와 N 구하기 H = LCM(3, 4, 10) = 60 N = (60/3) + (60/4) + (60/10) = 20 + 15 + 6 = 41 풀이 예제3:

감마 조정 이미지 [내부링크]

원본은 가운데를 지나는 직선의 값이다. 감마의 값이 클 수록 밑으로 내려가는데 밑으로 내려갈 수록 어두워진다. 위로 올라 갈 수록 감마의 값이 작아지는 데, 값이 작을 수록 밝아진다.

sjf, ljf, average waiting time [내부링크]

동일 표기, 뜻 괄호 안에 있는 건 해당 단어의 표기법이다. process = job (j) arrival time = release time (r) cpu runing time = Execution time(e) SJF 실행 시간이 짧은 것 부터 실행 Job Arrival time Execution time j1 0 8 j2 1 4 j3 2 9 j4 3 5 non-preemptive (비 선점형) average waiting time, avg wt ( 평균 대기 시간) average Turnaround time, avg Tt ( 평균 반환 시간) average Response time, avg Rt ( 평균 응답 시간) preemptive (선점형) * 선점형 SJF는 SRTF라고도 한다 average waiting time ( 평균 대기 시간) average Turnaround time ( 평균 반환 시간) average Response time ( 평균 응답 시간) LJK 실행

AVL 트리 개념정의, 2중 포인터를 이용한 c 코드 구현 [내부링크]

작년에 avl 구현 과제를 하면서 작성한 c 코드 avl을 구현한 c코드는 많지만 2중 포인터를 이용한 avl 코드는 없어서 올린다. 정의 컴퓨터 과학에서 AVL 트리(발명자의 이름인 Adelson-Velsky and Landis에서 따온 이름)는 자가 균형 이진 탐색 트리이다. 스스로 균형을 잡는 데이터 구조 중 처음으로 발명되었다. AVL 트리에서, 두 자식 서브트리의 높이는 항상 최대 1만큼 차이난다. 만약 어떤 시점에서 높이 차이가 1보다 커지면 이 속성을 유지하기 위해서 스스로 균형을 잡는다. 검색, 삽입, 삭제는 모두 평균과 최악의 경우 O(log n)의 시간복잡도가 걸린다. 삽입과 삭제는 한 번 이상의 트리 회전을 통해 균형을 잡을 수 있다. 코드 avl.h #ifndef __AVL_H__ #define __AVL_H__ struct AVL_Node { int key; struct AVL_Node* left; struct AVL_Node* right; int height

23.05.02 혼자 순천 여행, 순천만국가정원 후기 [내부링크]

어머니가 꼭 한 번 가보라고 했던 순천을 갔다. Previous image Next image 순천만 국가정원에 가기전에 순천 맛집으로 소개된 건봉 국밥이라는 집을 갔는데 맛은 엄청 맛있다 정도까지는 않았고 그냥 먹을만한 국밥집이었다. Previous image Next image 밥을 먹고 15분 정도 걸어서 순천만 국가정원으로 향했다. 나는 서문을 통해 입장했다. 참고로 짐이 있는 경우 입구에 물품 보관소가 있으니 이용하기 바란다. 공짜임 표는 성인 15000원 청소년 12000원 어린이 9000원 인데 5시 이후에는 할인 된 가격으로 이용할 수 있다고 한다. 표를 예매하고 들어가고 나서 입구 옆에 팜플렛으로 된 지도 있으니 챙겨가는 걸 추천 Previous image Next image 들어가서 처음에는 한국 정원을 처음으로 관람했는데 그냥 무난 무난한 정원 이었다. 위에 원형으로 된 입구도 있던데 여기에서 사진을 찍으면 되게 이쁘게 나올 것 같더라 Previous image

23.05.03 혼자 대전 여행, 한밭수목원, 들의공원, 농민순대 [내부링크]

주변 사람들이 대전이 노잼 도시라는 말을 많이 하길래 도대체 얼마나 할 게 없길래 노잼 도시라고 하는지 궁금해서 여행을 왔다. 일단 느낀건 진짜 여기는 노잼 도시가 맞는 것 같다. 광역시라고는 하나 솔직히 갈 만한 곳도 마땅하지 않아 조금 별로다, 광주랑 비슷하게 할 게 없고 갈만한 곳도 없다. Previous image Next image 일단 순천에서 서대전까지 새마을을 타고 왔는데 ktx나 새마을이나 시간은 별 차이없는데 가격은 1만 원 이상 차이나길래 새마을을 이용했다. 그러고 친구가 추천해준 농민 순대라는 집을 갔는데 개인적으로는 맛있었으나 돼지 비린내, 잡내를 싫어하는 분들에게는 불호 일것 같은 음식점이다. 음식을 먹는데 돼지 비린내가 조금 많이 난다. 나는 육고기 비린내는 괜찮아서 그냥 먹었는데 비린거 싫어하면 딴 곳을 가는 걸 추천 근데 나는 맛있게 먹었다. Previous image Next image 인터넷에 춘천 가볼만한곳으로 치면 1순위로 뜨는 곳이 여기 들의공

코틀린 안드로이드 앱 크롤링 [내부링크]

코틀린을 이용해 안드로이드에서 웹페이지를 크롤링 하여 데이터를 보여주는 앱을 만드는 방법에 대해서 설명하고자 한다. 나는 학생 식단표를 만들기 위해 학교 홈페이지에서 식단표를 보여주는 웹페이지를 크롤링 하였다. 해당 코드 위치는 월요일의 식단 정보를 담고 있는 <td> 태그 위치이다. 현재 해당 td 태그는 table 안에 있으므로 처음에 table 정보를 추출한다. table 정보 추출 코드 val url = "https://www.kongju.ac.kr/kongju/$value/subview.do" val document: Document = Jsoup.connect(url).get() // 크롤링할 테이블 선택 val tables = document.select("table") $value 부분은 매개변수를 이용해 해당 주소의 번호를 받을 수 있도록 지정해놓았다. 직원식당의 주소 번호 "신관" to "13156" "천안" to "13158" "예산" to "13160" tabl

프로그래머스 181188 요격시스템 파이썬 [내부링크]

검색해서 나온 다른 코드들이 너무 난잡해서 간단해 보이는 내가 작성한 코드로 올린다. 해당 문제를 처음 접했을 때에는 뭔 소리인지 이해를 못 했지만 다른 코드로 작성된 solution을 보니 e를 통해서 차순 정렬을 하는 것을 알게되었고 그림을 보니까 s가 e보다 같거나 큰 경우에 미사일을 카운트 한 다는 것을 알게되어 이와같이 코드를 작성하여 통과 하였다. 문제 A 나라가 B 나라를 침공하였습니다. B 나라의 대부분의 전략 자원은 아이기스 군사 기지에 집중되어 있기 때문에 A 나라는 B 나라의 아이기스 군사 기지에 융단폭격을 가했습니다. A 나라의 공격에 대항하여 아이기스 군사 기지에서는 무수히 쏟아지는 폭격 미사일들을 요격하려고 합니다. 이곳에는 백발백중을 자랑하는 요격 시스템이 있지만 운용 비용이 상당하기 때문에 미사일을 최소로 사용해서 모든 폭격 미사일을 요격하려 합니다. A 나라와 B 나라가 싸우고 있는 이 세계는 2 차원 공간으로 이루어져 있습니다. A 나라가 발사한 폭격

OpenCV 히스토그램 계산 파이썬 [내부링크]

코드 import cv2 import numpy as np src = np.array([[0, 0, 0, 0], [1, 1, 3, 5], [6, 1, 1, 3], [4, 3, 1, 7] ], dtype=np.uint8) # 0, 1 = 9개 / 2, 3 = 3개 / 4, 5 = 2개 / 6, 7 = 2개 hist1 = cv2.calcHist(images=[src], channels=[0], mask=None, histSize = [4], ranges = [0, 8]) print('hist1=', hist1) # 0 = 4개 / 1 = 5개 / 2 = 0개 / 3 = 3개 hist2 = cv2.calcHist(images=[src], channels=[0], mask=None, histSize = [4], ranges = [0 ,4]) print('hist2=', hist2) # 0=4 / 1=5 / 2=0 / 3=3 / 4=1 / 5=1 / 6=1 / 7=1 hist3 = cv2.c

OpenCV 임계값, 적응형 임계값을 통한 이미지 처리, 파이썬 [내부링크]

임계값 코드 import cv2 from matplotlib import pyplot as plt src = cv2.imread('c:/data/text1.jpg', cv2.IMREAD_GRAYSCALE) # src = cv2.imread('C:/data/Heart10.jpg', cv2.IMREAD_GRAYSCALE)/ # cv2.imshow('src', src) fig, ax = plt.subplots(2, 3, figsize = (10, 10), sharey=True) fig.canvas.manager.set_window_title('plt') # threshold 파라미터 # src – input image로 single-channel 이미지.(grayscale 이미지) # thresh – 임계값 # maxval – 임계값을 넘었을 때 적용할 value # type – thresholding type thresh = 100 maxval = 255 type = cv2.THRESH

OpenCV 히스토그램 color 밝기 누적 분포, 파이썬 [내부링크]

코드 import cv2 from matplotlib import pyplot as plt fig, ax = plt.subplots(1, 2, figsize = (10, 10)) fig.canvas.manager.set_window_title('plt') src = cv2.imread('C:/data/lena.jpg') ax[0].axis('off') ax[0].imshow(cv2.cvtColor(src, cv2.COLOR_BGR2RGB)) histColor = ('b', 'g', 'r') for i in range(3): hist = cv2.calcHist(images=[src], channels=[i], mask=None, histSize=[256], ranges=[0, 256]) ax[1].plot(hist, color=histColor[i]) plt.show() 결과 각 색상의 밝기 분포를 plt를 이용해 출력, 가로 축은 왼쪽으로 갈수록 어둡고 오른쪽으로 갈 수록 밝다 그래

OpenCV ROI(관심영역) 역투영, 파이썬 [내부링크]

* 역투영이란 관심 영역의 히스토그램과 유사한 히스토그램을 갖는 영역을 찾아내는 기법 * 얼굴 영역 분할을 위해 혹은 손 또는 얼굴등의 영역 분할 Hue 채널의 역투영 기법 코드 import cv2 import numpy as np from matplotlib import pyplot as plt src = cv2.imread('c:/data/fruits.jpg') # bgr to hsv 변환 hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV) h, s, v = cv2.split(hsv) # 관심영역 지정 roi = cv2.selectROI(src) print('roi= ', roi) roi_h = h[roi[1]:roi[1]+roi[3], roi[0]+roi[2]] # 관심 영역의 히스토그램 계산 hist = cv2.calcHist([roi_h], [0], None, [64], [0, 256]) # 계산한 히스토그램을 통해 역투영 backP = cv2.ca

프로그래머스 12941 문제 최솟값 만들기 [내부링크]

문제 설명 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. (단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.) 예를 들어 A = [1, 4, 2] , B = [5, 4, 4] 라면 A에서 첫번째 숫자인 1, B에서 첫번째 숫자인 5를 뽑아 곱하여 더합니다. (누적된 값 : 0 + 5(1x5) = 5) A에서 두번째 숫자인 4, B에서 세번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 5 + 16(4x4) = 21) A에서 세번째 숫자인 2, B에서 두번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 21 + 8(2x4) = 29) 즉, 이 경우가 최소가 되므로 29를 return 합니

OpenCV 영상, 이미지 회전 [내부링크]

코드 import cv2 from matplotlib import pyplot as plt src = cv2.imread('c:/data/lena.jpg') dst1 = cv2.rotate(src, cv2.ROTATE_90_CLOCKWISE) # 시계방향으로 90도 dst2 = cv2.rotate(src, cv2.ROTATE_90_COUNTERCLOCKWISE) # 반 시계방향으로 90도 dst1 = cv2.cvtColor(dst1, cv2.COLOR_BGR2RGB) dst2 = cv2.cvtColor(dst2, cv2.COLOR_BGR2RGB) fig, ax = plt.subplots(1, 2, figsize = (10, 10), sharey=True) # 1 x 2 서브플롯을 (10, 10)의 크기로 생성 fig.canvas.manager.set_window_title('plt') # 창 이름 # 시계방향 회전 사진 ax[0].axis('off') ax[0].imshow(dst1

OpenCV youtube 출력, python 3.8 이상 pafy, yt_dlp 이용 [내부링크]

해당 방법은 파이썬 3.8 버전 이상에서 실행되지 않는 현상을 고친 것입니다. pafy 와 yt_dlp를 이용해서 OpenCV 창에 유튜브 영상을 띄우는 방법을 사용했는데 이 방법을 사용하려면 pafy의 내부 코드르 변경해야 합니다. C:\Python38\Lib\site-packages\pafy이 와 같이 pafy가 설치된 곳으로 들어가셔서 pafy.py, backend_youtube_dl.py의 파일을 수정합니다. pafy.py 해당 행 주석 처리 해당 부분은 파이썬 2에서 실행이 되도록 하는 것이므로 파이썬 3부터는 urllib에 있어서 없애버리시면 됩니다. 36 # else: 37 # from urllib2 import HTTPError 48 번째 행을 주석처리하고 그 밑에 49행의 코드 추가 48 # import youtube_dl 49 import yt_dlp as youtube_dl backend_youtube_dl.py 주석 처리 10 # else: 11 # uni =

jsp 이미지 업로드 에러 [내부링크]

에러 Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:610) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:489) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327) javax.servlet.http.HttpServlet.service(HttpServlet.java:764) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 근본 원인 (root cause) javax.servlet.ServletExc

OpenCV IPWebCam 연결, 스마트폰 연동 [내부링크]

두 가지 방식으로 테스트를 해봤는데 서로 딜레이와 프레임이 약간씩 차이가 있었다. 자신에게 맞는 방법으로 쓰길 권함 코드 1 # 딜레이는 있지만 프레임은 더 잘나옴 from urllib.request import urlopen import cv2 import numpy as np import time url = "http://192.168.0.2:8080/video" cap = cv2.VideoCapture(url) # 프레임 사이즈 출력 # frame_size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), # int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) # print(frame_size) while True: ret, frame = cap.read() if not ret: print('not ret') break # opencv 창 크기 조정 frame = cv2.resize(frame, (720, 480)) cv2.ims

공주대 기숙사 식단표 안드로이드 앱 [내부링크]

23.03.26 에타나 학교 앱으로도 볼 수 있긴 한데, 에타는 버그걸려서 못 볼 때도 있고 학교앱은 시인성이 별로라 심심해서 만들어 봤습니다. 원래는 플레이 스토어에 함 올려보려고 했는데 개발자 계정 만들 때 25달러를 내야된다고 하길래 그냥 여기다가 올림 해당 앱은 휴대폰에 필요한 권한 설정이 따로 필요 없으므로 보안에는 딱히 문제는 없겠지만 정 불길하면 다운 받지 말고 그냥 에타나 유니돔 통해서 확인하길 추천 23.05.08 천안 공주대 기숙사 식단은 기숙사 홈페이지에 식단 업데이트가 안되는 경우가 종종 있어서 공주대 홈페이지에서 바로 크롤링하도록 수정, 에브리타임이나 유니돔 앱에서 종종 안뜨는 경우가 확인해보니 기숙사 홈페이지에서 크롤링을 하는 코드로 되어있어 기숙사 홈피에 데이터가 없으면 식단이 안뜨는 것 같음 수정하면서 기숙사 뿐 만 아니라 학생, 직원 식당의 식단표도 볼 수 있도록 만듬 화면구성 초기 메인 화면 기숙사 버튼을 누를 경우 뜨는 화면 버튼을 누를 경우 해당

OpenCV 이미지 평활화(개선) 후 저장 [내부링크]

OpenCV를 통해 이미지를 평활화 후 이미지를 저장하는 법 src = 원본 hsv = BGR -> HSV -> BGR ycrcb = BGR -> yCrCb -> BGR src2 = BGR -> B, G, R 각각의 밝기 조정 -> merge([B, G, R]) OpenCV에서 평활화(개선)은 cv2.equalizeHist()를 이용한다. (1채널의 밝기를 평활화 해주는 함수) cv2.imwrite('저장위치', 파일)을 통해 이미지 저장 코드 import cv2 from matplotlib import pyplot as plt fig, ax = plt.subplots(2, 4, figsize =(10, 10)) fig.canvas.manager.set_window_title('plt') src = cv2.imread('c:/data/black1.jpg') cv2.imwrite('./src.png', src) ax[0][0].axis('off') ax[0][0].set_title('

OpenCV 평탄화 웹캠 연동 예 [내부링크]

웹캠의 화면을 평탄화 시키는 방법 코드 import cv2 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if not ret: break # 원본 출력 cv2.imshow('src', frame) # hsv을 이용한 평활화 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) h, s, v = cv2.split(hsv) v2 = cv2.equalizeHist(v) hsv2 = cv2.merge([h, s, v2]) dst1 = cv2.cvtColor(hsv2, cv2.COLOR_HSV2BGR) cv2.imshow('hsv', dst1) # ycrcb를 이용한 평활화 ycrcb = cv2.cvtColor(frame, cv2.COLOR_BGR2YCrCb) y, cr, cb = cv2.split(ycrcb) y2 = cv2.equalizeHist(y) ycrcb2 = cv2.merge([y2, cr

OpenCV grayScale 히스토그램 평활화 [내부링크]

코드 import cv2 import numpy as np from matplotlib import pyplot as plt src = cv2.imread('C:/data/lena.jpg', cv2.IMREAD_GRAYSCALE) dst = cv2.equalizeHist(src) # 평활화 # cv2.imshow('src no hist', src) # cv2.imshow('dst hist', dst) fig, ax = plt.subplots(2, 2, figsize=(10, 10)) fig.canvas.manager.set_window_title('plt') ax[0][0].axis('off') ax[0][0].set_title('src') ax[0][0].imshow(src, cmap='gray') ax[0][1].axis('off') ax[0][1].set_title('dst') ax[0][1].imshow(dst, cmap='gray') plt.title('gray scale

OpenCV 영상, 사진의 속성 확인 [내부링크]

코드 import cv2 import numpy as np img = cv2.imread('c:/data/lena.jpg') gray_img = cv2.imread('c:/data/lena.jpg', cv2.IMREAD_GRAYSCALE) print('img.ndim = ', img.ndim) # 차원의 수 칼라는 3차원 print('img.shape = ', img.shape) # 3 채널 print('img.dtype = ', img.dtype) print('gray_img.ndim = ', gray_img.ndim) # 차원의 수 흑백은 2차원 print('gray_img.shape = ', gray_img.shape) #1 채널 print('gray_img.dtype = ', gray_img.dtype) img = img.astype(np.int32) # 화소 자료형을 정수형으로 print('img.dtype = ', img.dtype) img = np.uint8(img) p

OpenCV ROI(관심영역) 선택 후 출력 [내부링크]

코드 import cv2 from matplotlib import pyplot as plt src = cv2.imread('c:/data/lena.jpg', cv2.IMREAD_GRAYSCALE) roi = cv2.selectROI(src) # roi select 윈도우에 src 출력 print('roi = ', roi) if roi != (0, 0, 0, 0): # roi[0] = x축 / roi[1] = y축 / roi[2] = 가로 / roi[3] = 세로 img = src[roi[1]:roi[1] + roi[3], roi[0]:roi[0] + roi[2]] # plt를 이용한 ROI 출력 img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.axis('off') plt.imshow(img) plt.show() # opencv 를 이용한 ROI 출력 # cv2.imshow('img', img) # cv2.imwrite('../test.png', i

OpenCV ROIs(관심영역들) 지정 출력 [내부링크]

코드 import cv2 src = cv2.imread('c:/data/lena.jpg', cv2.IMREAD_GRAYSCALE) # showCrosshair = False 선택영역 격자표시 x # fromCenter = True 로 마우스 클릭 위치 중심을 기준으로 드래그 하여 박스 선택 rects = cv2.selectROIs('src', src, showCrosshair = False, fromCenter = True) print('rects = ', rects) for r in rects: cv2.rectangle(src, (r[0], r[1]), (r[0] + r[2], r[1] + r[3]), 255) img = src[r[1]:r[1] + r[3], r[0]:r[0] + r[2]] cv2.imshow('img', img) cv2.waitKey() cv2.imshow('src', src) cv2.waitKey() cv2.destroyAllWindows() 결과 마우스로 지

OpenCV 영상 복사 [내부링크]

코드 import cv2 import numpy as np from matplotlib import pyplot as plt src = cv2.imread('c:/data/lena.jpg', cv2.IMREAD_GRAYSCALE) shape = src.shape[0], src.shape[1], 3 dst = np.zeros(shape, dtype=np.uint8) # 3채널 컬러 영상 생성 dst1 = dst.copy() # 복사 dst2 = dst.copy() # 복사 dst3 = dst.copy() # 복사 dst1[:,:,0] = src # 그레이스케일의 b 부분 dst2[:,:,1] = src # 그레이스케일의 g 부분 dst3[:,:,2] = src # 그레이스케일의 r 부분 dst1[100:400, 200:300, :] = [255, 255, 255] # 해당 부분을 흰색으로 표현 dst2[100:400, 200:300, :] = [255, 255, 255] # 해당 부분

OpenCV 밝기(색상) 분할, cv2.split() [내부링크]

코드 import cv2 src = cv2.imread('c:/data/lena.jpg') dst = cv2.split(src) # 분할 print(type(dst)) print(type(dst[0])) # cv2 출력 # cv2.imshow('blue', dst[0]) # cv2.imshow('green', dst[1]) # cv2.imshow('red', dst[2]) # cv2.waitKey() # cv2.destroyAllWindows() # plt 출력 fig, ax = plt.subplots(2, 2, figsize = (10, 10), sharey=True) # 2 x 2 서브플롯을 (10, 10)의 크기로 생성 fig.canvas.manager.set_window_title('plt') # 창 이름 # 왼쪽 상단 ax[0][0].axis('off') ax[0][0].imshow(dst[2], aspect = 'auto', cmap='gray') # r # 오른쪽 상단

OpenCV 채널(색상) 병합, cv2.merge([b, g, r]) [내부링크]

코드 import cv2 from matplotlib import pyplot as plt src = cv2.imread('c:/data/lena.jpg') b, g, r = cv2.split(src) # 분할 dst = cv2.merge([b, g, r]) # 병합, opencv에서는 b, g, r 순이므로 print(type(dst)) print(dst.shape) # cv2.imshow('r', r) # cv2.imshow('g', g) # cv2.imshow('b', b) # cv2.imshow('dst', dst) # cv2.waitKey() # cv2.destroyAllWindows() # plt 출력 fig, ax = plt.subplots(2, 2, figsize = (10, 10), sharey=True) # 2 x 2 서브플롯을 (10, 10)의 크기로 생성 fig.canvas.manager.set_window_title('plt') # 창 이름 ax[0][0].a

OpenCV 이미지, 영상 크기 조절 [내부링크]

import cv2 src = cv2.imread('c:/data/lena.jpg', cv2.IMREAD_GRAYSCALE) dst = cv2.resize(src, dsize = (320, 240)) # 가로 320, 세로 240 dst2 = cv2.resize(dst, dsize = (0, 0), fx = 1.5, fy = 1.2) # 가로를 1.5배, 세로를 1.2배로 만듬 cv2.imshow('dst', dst) cv2.imshow('dst2', dst2) cv2.waitKey() cv2.destroyAllWindows() 결과

opencv 타원, 다각형 그리기 [내부링크]

타원 import cv2 import numpy as np img = np.zeros(shape=(500, 500, 3), dtype = np.uint8) ptCenter = img.shape[1] // 2, img.shape[0] // 2 size = 200, 100 # 큰 원 cv2.ellipse(img, center=ptCenter, axes=size, angle=135, # 출력창, 중심좌표, 크기, 회전각도, startAngle=0, endAngle=270, color=(255, 0, 0), thickness=1) # 보이는 시작 각도, 보이는 끝 각도, 색상, 두께 cv2.ellipse(img, ptCenter, size, 45, 0, 360, (0, 0, 255)) # 출력창, 중심좌표, 크기, 회전각도, 보이는 각도, 색상 # 작은 원 box = (ptCenter, size, 0) # 중심좌표, 크기, 회전 각도 cv2.ellipse(img ,box, (255, 0,

opencv 웹캠 비디오를 영상으로 저장 [내부링크]

opencv 는 영상으로 저장하는 경우 소리는 저장되지 않는다, 소리를 저장하기 위해서는 소리를 따로 녹음하고 영상을 합쳐야 하는 방법으로 해야된다. import cv2 cap = cv2.VideoCapture(0) frame_size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) # 코덱의 종류 fourcc = cv2.VideoWriter_fourcc(*'XVID') # mpeg-4 # fourcc = cv2.VideoWriter_fourcc(*'MJPG') # Motion-JPEG # fourcc = cv2.VideoWriter_fourcc(*'DVIX') # DIVX 4.0 이후 버전 # fourcc = cv2.VideoWriter_fourcc(*'PIM1') # MPEG-1 # fourcc = cv2.VideoWriter_fourcc(*'MPEG') # MPEG # four

OpenCV 픽셀의 RGB 별로 밝기(색상) 지정 [내부링크]

코드 1 import cv2 from matplotlib import pyplot as plt img = cv2.imread('C:/data/lena.png') imgR = img.copy() # img 이미지 복사 imgG = img.copy() imgB = img.copy() # print(img[0,0]) # 0, 0 픽셀의 색상 정보 출력 OpenCV 이므로 BGR 순 pxColor = 0 imgR[100:200, 200:400, 0:2] = pxColor # b, g의 색상을 0으로 만들어서 r의 정보만 저장 imgG[100:200, 200:400, 0:3:2] = pxColor # 픽셀에 g의 정보만 저장 imgB[100:200, 200:400, 1:3] = pxColor # 픽셀에 b의 정보만 저장 imgR = cv2.cvtColor(imgR, cv2.COLOR_BGR2RGB) imgG = cv2.cvtColor(imgG, cv2.COLOR_BGR2RGB) imgB =

OpenCV 사진 색상 반전 [내부링크]

흑백 사진 색상 반전 import cv2 from matplotlib import pyplot as plt img = cv2.imread('C:/data/1213.png', cv2.IMREAD_GRAYSCALE) print(img.shape) neg_img = 255 - img # 색상 반전, for 안써서 해도 됨 # img = cv2.cvtColor(img, cv2.GRAY) plt.axis('off') # plt.imshow(img, cmap='gray') # cmap='gray' 를 꼭 써줘야 제대로 나옴 plt.imshow(neg_img, cmap='gray') plt.show() plt.show() 전 후 칼라 사진 색상 반전 import cv2 from matplotlib import pyplot as plt img = cv2.imread('C:/data/1213.png') neg_img = 255 - img # 색상 반전, for 안써서 해도 됨 # img = cv2.

opencv 키보드 이벤트 [내부링크]

import cv2 import numpy as np width, height = 500, 500 x, y, R = 256, 256, 50 direction = 0 while True: key = cv2.waitKeyEx(30) if key == 0x1B: # esc 16진수 break # 방향 전환 elif key == 0x270000: # 우 direction = 0 elif key == 0x280000: # 하 direction = 1 elif key == 0x250000: # 좌 direction = 2 elif key == 0x260000: # 상 direction = 3 # 방향 이동 if direction == 0: x+=10 elif direction == 1: y+=10 elif direction == 2: x-=10 elif direction == 3: y-=10 # 경계 확인 if x < R: x = R direction = 0 if x > width - R: x

opencv 회전 사각형 [내부링크]

import cv2 import numpy as np img = np.zeros(shape=(500, 500, 3), dtype=np.uint8) x, y = 256, 256 size = 200 for angle in range(0, 90, 10): # 맨 오른쪽 정수의 값이 클 수록 도형의 개수가 적어지고, 수가 작을 수록 도형이 많아진다. rect = ((256, 256), (size, size), angle) # angle은 회전각도 이다. box = cv2.boxPoints(rect).astype(np.int32) r = np.random.randint(256) # 0~255 까지 랜덤 난수 생성, 랜덤 색상 지정 g = np.random.randint(256) # 0~255 까지 랜덤 난수 생성 b = np.random.randint(256) # 0~255 까지 랜덤 난수 생성 cv2.polylines(img, [box], True, (b, g, r), 2) cv2.imsh

프로그래머스 JadenCase 문자열 만들기 12951번 [내부링크]

처음에 시도할 때에는 공백문자가 여러번 나온다는 것을 인지하지 못하여 이렇게 작성하고 오류가 있었다. def solution(s): l = s.split() for i in range(len(l)): l[i] = l[i].lower() if l[i][0].isalpha(): l[i] = l[i].capitalize() answer = ' '.join(l) return answer 이렇게 하다가 공백문자를 어떻게 여러번 나오게 할까 고민하다가 모르겠어서 인터넷을 통해 참고했는데 공백문자를 확인하는 코드를 추가하여 해당 코드를 완성했다. def solution(s): answer = '' l = s.split(" ") for i in l: if i==" ": i += " " continue i = i.lower() if i.isalpha: i = i.capitalize() answer += i+" " return answer[:-1]

프로그래머스 폰켓몬 1845번 문제, 파이썬 [내부링크]

해당 문제는 되게 간단한 문제이다. 고를 수 있는 폰켓몬의 최대 종류를 구하면 되는 문제이기 때문이다. 해당 문제는 바로 맞춘 문제였다. def solution(nums): v = len(nums) // 2 nums = set(nums) #중복제거 nums = len(nums) return nums if nums <= v else v

프로그래머스 전화번호 목록 42577 번 문제 파이썬 [내부링크]

처음에는 그냥 앞의 번호가 뒤에 들어있으면 false를 반환 하는 줄 알았는데 계속 13번에서 실패가 뜨길래 접두어(접두사)의 의미를 네이버에 검색해서 보니까 "단어의 앞에 붙어 새로운 단어가 되게 하는 말." 이라고 해서 앞 부분만 비교하는 식으로 만들어서 해결했다. def solution(phone_book): phone_book.sort() answer = True for i in range(len(phone_book)-1): # [:len(phone_book[i])] 이 부분을 추가해줘서 앞의 길이만큼만 앞 부분을 비교하는 방식으로 만들었다. if phone_book[i] in phone_book[i+1][:len(phone_book[i])]: answer = False break return answer

opencv 마우스 이벤트 [내부링크]

import cv2 import numpy as np def onMouse(event, x, y, flags, param): if event == cv2.EVENT_LBUTTONDOWN: # 마우스 왼쪽 클릭 if flags & cv2.EVENT_FLAG_SHIFTKEY: # shift 키와 함께 cv2.rectangle(param[0], (x-5, y-5), (x+5, y+5), (255, 0, 0)) # 파란색 네모 그리기 else: cv2.circle(param[0], (x, y), 5, (255, 0, 0), 3) # 파란색 원 그리기 elif event == cv2.EVENT_RBUTTONDOWN: # 마우스 오른쪽 클릭 cv2.circle(param[0], (x, y), 5, (0, 0, 255), 3) # 빨간색 원 그리기 elif event == cv2.EVENT_LBUTTONDBLCLK: # 마우스 왼쪽 더블 클릭 param[0] = np.zeros(param[0].

모바일 웹 서비스 구현을 위한 JSP 9강 예제 답안 [내부링크]

답안은 드래그 하시면 됩니다. 틀린 게 있을 시 댓글 남겨주시면 수정하겠습니다. 디스크에 저장된 Java 클래스 파일을 Java 가상 머신이 동작하는 메모리로 업로드 하기 위해 이용되는 함수 Class.forName(); 2. 이름이 myapp인 데이터베이스에 대한 커넥션을 얻기위해 DriverManage.getConnection() 함수를 호출하고자 할 때, 첫 번째 파라미터로 들어갈 URL은 어떤 형태로 구성되나요? (단, 로컬로 가정) jdbc:mysql://localhost:3306/myapp 3. JDBC를 이용하여 SELECT 구문을 수행하고자 할 때, executeQuery() 함수를 통해 전달되는 결과 값은 어떤 클래스 형태로 반환되나요? ResultSet 4. JDBC에 연결에 이용된 Connection이나 Statement 객체를 close() 함수를 통해 닫아주지 않을 경우 발생되는 문제는? 메모리에 객체들이 계속 남게되어 가비지 컬렉터를 유발한다.

모바일 웹 서비스 구현을 위한 JSP 10강 예제 답안 [내부링크]

답안은 드래그 하면 보입니다. 일정 개수의 Connection 객체를 미리 생성해둔 후, 사용자가 요청할 때마다 가용한 객체를 할당해주는 기술을 일컫는 말은? DB 커넥션 풀 or DB Connection Pool 2. context.xml 을 통해 등록된 공통 자원들을 디렉토리로 부터 찾기 위해 이용되는 java 서비스는? JNDI 3. 공통으로 들어갈 키워드 static 4. 데이터베이스 커넥션 풀 설정을 위해 context.xml의 <Resource> 태그에 정의되어야ㅐ 할 속성과 거리가 먼 것은? value 5. preparedstatement 말고 statement 를 사용할 경우 사용하지 못 하는 것은? 작은 따옴표(' ') 6. 빈칸 답안 request.getParameter("id"); "DELETE FROM user WHERE id=?"; jdbc:mysql://localhost:3306/mysns conn.preparedstatement(sql); stmt.setS

opencv 화면 캡처후 이미지 저장, 파이썬 코드 [내부링크]

import cv2 import os # 이미지 저장 초기 경로 SAVE_PATH = "C:/senow/" # 이미지 저장 함수 def displayCapture(screenshot): # screenshot을 통해 opencv 창 정보를 받아옴 # 이미지 저장 폴더, 없는 경우 생성, 있는 경우 pass if not os.path.exists(SAVE_PATH): os.makedirs(SAVE_PATH) try: # 현재 시간을 파일 이름으로 사용하여 png 파일로 저장 current_time = datetime.datetime.now().strftime("%Y-%m-%d %H-%M-%S") file_name = f"{SAVE_PATH}/{current_time}.png" cv2.imwrite(file_name, screenshot) # 이미지 저장 print(f"Screenshot saved to {file_name}") # 출력 except: print("에러 발생")

코틀린 어제 날짜 구하기 [내부링크]

import java.util.* import java.text.SimpleDateFormat var calendar = Calendar.getInstance() var today = Date() calendar.time = today calendar.add(Calendar.DAY_OF_YEAR, -1) //변경하고 싶은 원하는 날짜 수를 넣어 준다. var time = SimpleDateFormat("yyyyMMdd") println("시간: " + time.format(calendar.time)) // 어제 날짜 출력

영화 진흥위원회 영화 상세정보 api json 파싱 kotlin [내부링크]

요즘 영화와 관련된 어플을 만들고 있다. 약간 네이버 영화 비슷하게 영화 정보들을 보여주는 앱을 만들고 있는데 json 데이터를 파싱하는 코드를 올려본다. https://www.kobis.or.kr/kobisopenapi/homepg/apiservice/searchServiceInfo.do 영화진흥위원회 오픈API 제공서비스 영화관입장권통합전산망이 제공하는 오픈API서비스 모음입니다. 사용 가능한 서비스를 확인하고 서비스별 인터페이스 정보를 조회합니다. OPEN API 제공서비스 일별 박스오피스 주간/주말 박스오피스 공통코드 조회 영화목록 영화 상세정보 영화사목록 영화사 상세정보 영화인목록 영화인 상세정보 다운로드 튜토리얼 일별 박스오피스 API 서비스 특정 일자 상영작들의 박스오피스 정보를 영화구분(다양성영화,상업영화), 한국/외국 구분, 상영지역 등의 조건을 통해 조회합니다. REST/SOAP 방식 중 선택적으로 호출가능하며 REST 방식... www.kobis.or.kr 영화진

영화 진흥위원회 박스오피스 api json 파싱 kotlin [내부링크]

https://www.kobis.or.kr/kobisopenapi/homepg/apiservice/searchServiceInfo.do 영화진흥위원회 오픈API 제공서비스 영화관입장권통합전산망이 제공하는 오픈API서비스 모음입니다. 사용 가능한 서비스를 확인하고 서비스별 인터페이스 정보를 조회합니다. OPEN API 제공서비스 일별 박스오피스 주간/주말 박스오피스 공통코드 조회 영화목록 영화 상세정보 영화사목록 영화사 상세정보 영화인목록 영화인 상세정보 다운로드 튜토리얼 일별 박스오피스 API 서비스 특정 일자 상영작들의 박스오피스 정보를 영화구분(다양성영화,상업영화), 한국/외국 구분, 상영지역 등의 조건을 통해 조회합니다. REST/SOAP 방식 중 선택적으로 호출가능하며 REST 방식... www.kobis.or.kr 박스오피스 api의 json을 파싱할 때 사용하는 kotlin코드이다. time()을 이용해 어제 날짜를 구해서 날짜를 구해준다. 그 이유는 당일 날짜로 하는 경

웹 프로젝트 user, feed (db) [내부링크]

요즘 내가 만들고 있는 웹의 db 틀 if not exists는 존재 하지 않으면 실행하라는 뜻이다 그래서 CREATE TABLE IF NOT EXISTS user 이면 user 테이블이 없다면 만들어라 라는 뜻이다. use web_sns; CREATE TABLE IF NOT EXISTS user ( id varchar(20) PRIMARY KEY, password VARCHAR(16), name VARCHAR(10), ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS feed( id VARCHAR(20), content VARCHAR(4096), ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

웹페이지 뒤로가기 막기, html [내부링크]

html 코드 <body onload="noBack();" onpageshow="if(event.persisted) noBack();" > </body>

카카오 이미지 검색 api, kotlin [내부링크]

영화 관련 어플을 만들면서 영화 제목, 출연진, 회사, 기타 정보등은 영화 진흥위원회 api에서 받아 올 수 있지만 영화 포스터는 지원을 하지 않아 여러 방면으로 알아봤는데 처음에는 그냥 다운받아서 쓸까 하다가 rest api를 통해 전송 받는 방식으로 한 번 사용해 보고 싶어서 사용했지만 결과적으로는 실패했다. 네이버는 이제 영화 관련 api는 종료한다고 하고, 카카오도 영화와 관련된 api는 지원을 하지 않아서 이미지 검색을 통해 진행 해봤는데 내가 원하는 이미지는 아니었다. 나중에 포스터나 감독, 배우 얼굴에 관한 이미지는 해외 api를 사용하던지 아니면 이미지를 데이터베이스에 저장해서 사용하는 방식으로 하던지 해야겠다. 일단 api 자체가 코틀린을 보여주는 코드도 없고 검색해봐도 적어서 어떤 사람에게는 도움이 될 수 있도록 이렇게 글로 남긴다. manifest <uses-permission android:name="android.permission.INTERNET"/> gra

메인 액티비티에서 네트워크 작업을 수행 에러 [내부링크]

메인 액티비티에서 네트워크 작업을 수행하려고 할 때 발생하는 에러 쓰레드 안에 넣고 실행하면 해결 됨 java.lang.RuntimeException: Unable to start activity ComponentInfo{org.techtown.movie/org.techtown.movie.MainActivity}: android.os.NetworkOnMainThreadException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) at android.app.servertransaction.Transac

opencv imread 에러 [내부링크]

경로에 한글이나 다른 이상으로 인해 파일을 불러오지 못하는 에러 [ WARN:[email protected]] global loadsave.cpp:244 cv::findDecoder imread_('right_eye_cutout.png'): can't open/read file: check file path/integrity [ WARN:[email protected]] global loadsave.cpp:244 cv::findDecoder imread_('left_eye_cutout.png'): can't open/read file: check file path/integrity [ WARN:[email protected]] global loadsave.cpp:244 cv::findDecoder imread_('nose_tip_cutout.png'): can't open/read file: check file path/integrity [ WARN:[email protected]] global loadsave.cpp:244 cv::findDecoder

OpenCV 이미지 불러오기 에러 파이썬 [내부링크]

OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\morph.dispatch.cpp:1010: error: (-215:Assertion failed) !src.empty() in function 'cv::erode' !src.empty() in function 불어올 이미지가 없다는 에러이다. 'cv::erode' 불러올 이미지 이름

아두이노를 이용해서 리모컨을 통해 방 전등 on, off 하기 [내부링크]

아두이노를 이용해 제 방의 전등을 껐다 켰다 할 수 있도록 만들었습니다. #전자 #아두이노 #코딩 #전자공학 #컴퓨터공학 #공학 #리모컨 #lcd #i2c #lcdi2c #ir #CH340 #servo #servomotor 필요한 재료 왼쪽부터 i2c lcd, 아두이노 나노 호환보드(CH340), IR센서(LTOP-ML38ATH), 서보모터(SG-90), 보조배터리(5000mAh), 소켓 점퍼 케이블(수암, 암암, 수수), 저는 여기있는 재료들을 디바이스 마트에서 구매했습니다. (참고로 광고 아니고 진짜 제 돈주고 다 샀습니다.) 다이소에서 추가로 열수축튜브와 찍찍이 테이프를 추가로 구매 했습니다. 저는 벽에 붙혀서 사용할 거라 찍찍이로 안되면 이용하려고 폼테이프도 샀는데 찍찍이로도 잘 붙어서 양면테이프는 필요 없습니다. 아두이노 https://www.devicemart.co.kr/goods/view?no=1342039 아두이노 나노 호환보드 CH340 [SZH-EK025] 아두이노

아두이노 리듬 게임 패드, 아두이노 디맥콘 [내부링크]

작년에 만들었던 아두이노로 만든 리듬게임 패드 코드 #include "Keyboard.h" const byte xAxis = A1; //조이스틱 x축 아날로그 핀 번호 const byte yAxis = A0; //조이스틱 y축 아날로그 핀 번호 const byte dAxis = 12; //조이스틱 버튼 핀 번호s const byte button[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; //버튼 입력 핀 번호 const char bt[] = {'n', 'l', 'k', 'j', KEY_RIGHT_SHIFT, KEY_LEFT_SHIFT, 'd', 's', 'a', KEY_ESC}; //버튼 입력키 const char joyArrow[] = {KEY_RETURN, KEY_LEFT_ARROW, KEY_RIGHT_ARROW, KEY_UP_ARROW, KEY_DOWN_ARROW}; //조이스틱 방향키 void setup() { Keyboard.begin(); for(

안드로이드 스튜디오 빌드 오류 force [내부링크]

빌드하다가 해당 오류가 떠서 구글링을 통해 해결하였다. 해당 오류가 난 경우 밑에 나온 코드 에서 configurations.all{}를 복사해서 넣어주면 해결된다. defaultConfig { applicationId "org.techtown.movie" minSdk 21 targetSdk 31 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" configurations.all { // 이 부분 추가 resolutionStrategy { force 'androidx.lifecycle:lifecycle process:2.3.1' force 'androidx.lifecycle:lifecycle-runtime:2.3.1' force 'androidx.appcompat:appcompat:1.3.1' force 'androidx.appcompat:appcompat

모바일 웹 서비스 구현을 위한 JSP 웹 프로그래밍 7과 예제 답안 [내부링크]

틀린 답이 있을 경우 댓글에 남겨주시면 수정하겠습니다. 문제 1. 내장 객체가 변수 선업 ㅇ벗이 이용될 수 있는 이유는 무엇인가? 2.쿼리 스트링에 포함된 이름이 같은 파라미터가 여러개일 경우. 이들을 추출하기 위해 이용되는 request 객체의 함수는 무엇인가? 3. jsp의 스크립팅 요소 중 내장 객체를 쓸 수 있는 곳은 어디인가? 4. JSP의 스크립팅 요소 중 out.write()로 변환되는 요소는 무엇인가? 5. request 객체는 주로 어떤 용도로 이용되는가? 6. 세션과 쿠키의 차이점 7. session 객체를 이용할 때 세션 정보를 모두 삭제하기 위한 함수는 무엇인가? 8. 다음과 같이 로그인 화면에서 방문자 수를 출력 9. 예제 7-1에서 실습한 main.jsp의 상단에 로그아웃 버튼을 추가한 후, 해당 버튼을 누르면 logout.jsp가 호출되도록 main.jsp를 수정해 주세요. 답 1. JSP 파일이 서블릿으로 변환되는 과정에서 JSP 컨테이너에 의해 자동으로

모바일 웹 서비스 구현을 위한 JSP 웹 프로그래밍 6과 예제 답안 [내부링크]

틀린 답이 있을 경우 댓글에 남겨주시면 수정하겠습니다. 문제 1. 프로그래밍 스타일 관점에서 서블릿과 JSP는 어떤 차이점이 있나요? 2. JSP에 비해 서빌릿이 지니는 장점은 어떤 것이 있나요? 3. 스크립트릿에 정의된 Java 코드는 서블릿으로 변환될 때 어떤 함수에 포함되나요? 4. HTMl 주석과 JSP 주석 중 보안 측면에서 어떤 것이 더 유리한가요? 이유는 무엇인가요? 5. Page 지시어에 포함되는 속성과 거리가 먼 것은? 6. 표현식 <%=%>은 서블릿으로 변환될 때 어떤 함수 호출의 형태로 변환되나요? 7. GEt 방식을 이용할 때 한글을 정상적으로 출력하기 위해 page 지시어에서 정의되어야 하는 속성의 이름은 무엇인가요? 8. 다음 JSP 코드의 서블릿 변환 결과를 작성하시오(공백이나 개행 생략) 9. 다음 JSP 코드의 서블릿 변환 결과를 작성하시오(공백이나 개행 생략) 답 1. 서블릿은 JAVA 코드내에서 HTML을 호출하고, JSP는 HTMl에서 JAVA 함

모바일 웹 서비스 구현을 위한 JSP 웹 프로그래밍 5과 예제 답안 [내부링크]

틀린 답이 있을 경우 댓글에 남겨주시면 수정하겠습니다. 문제 1. GET 방식의 HTTP 요청을 처리하기 위한 서블릿의 멤버 함수 이름은 무엇인가? 2. 쿼리 스트링에서 이름이 name인 파라미터 값을 추출하기 위한 HttpServletRequest 클래스의 멤버 함수 이름은 무엇인가? 3. 체크박스 형태의 HTMl 페이지로 부터 전달되는 입력 값을 추출하기 위해 가장 적절하게 이용될 수 있는 HttpServletRequest 클래스의 멤버 함수 이름은 무엇인가? 4. 다음 코드를 실행시켰을 때 사용자가 입력한 값이 'Green'이라면, 'Favorite Color: Green'이 출력되도록 ColorServlet 코드를 작성하시오 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="Color"> <input type="text"

모바일 웹서비스를 위한 jsp 웹프로그래밍 4과 답안 [내부링크]

틀린 답이 있을 경우 댓글에 남겨주시면 수정하겠습니다. 문제 Form 태그의 action 속성에 정의되는 값은 무엇인가? 다음 중 Form 태그의 속성과 거리가 먼 것은 무엇인가? 다음 중 Form 태그의 method 속성에 지정될 수 있는 값과 거리가 먼 것은 무엇인가? URL에 기술된 서비스 파일의 확장자에 따른 톰캣의 처리 방법중 틀린 내용은 무엇인가? HTTP 요청 메세지 헤더의 시작 라인에 포함되는 내용이 아닌 것은 무엇인가? HTTP 전송 방식중 파일을 전송하고자 할 때 이용되는 방식은 무엇인가? GET 방식의 문제점은 무엇인가? 동적 웹 프로그래밍에서 URL은 어떤 형식으로 구성되는가? city.html에서 'seoul'과 'busan'을 입력하고 OK 버튼을 눌렀을 때 생성되는 URL은 무엇인가? <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <bo

안드로이드 11 이상 toast.setGravity() 지원안함 [내부링크]

공식 사이트에서 안드로이드11(api 30) 이상부터 setGravity()를 지원하지 않는다고 함 set Gravity()를 테스트 해보고 싶은 경우 10 버전 이하로 테스트 진행 https://velog.io/@pachuho/Android-Docs-Android-11-Toast-Updates [Android Docs] Android 11 Toast Updates 원본문서Android 11 (R) is the next generation of Android in 2020 and Google has released the Android 11 Preview 2.1 in early April for developer’s review. velog.io https://forums.bignerdranch.com/t/geoquiz-challenge-1-toast-gravity-doesnt-change/17795/2 GeoQuiz Challenge 1: Toast Gravity doesn't c

안드로이드 버튼 클릭 이벤트 방법 두 가지 [내부링크]

버튼1: xml에 onclick을 추가하여 함수를 구현해 이용하는 방식 버튼2: 버튼의 id값을 이용하여 setOnClickListener를 이용한 방식 MainActivity.kt package org.techtown.test1 import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.Gravity import android.widget.Button import android.widget.Toast class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_sub) val btn = findViewById<Button>(R.id.btn2) bt

jsp servlet 한글 깨짐, 서블릿 한글 물음표 [내부링크]

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); // doGet 안에 이거 추가 } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); //doPost 안에 이거 추가 doGet(request, response); }

com.mysql.jdbc.Driver 에러 [내부링크]

간단한 db 셀렉터 코드 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.sql.*" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% Class.forName("com.mysql.cj.jdbc.Driver"); String dbURL = "jdbc:mysql://localhost:3306/web_sns"; String dbID = "root"; String dbPW = "0000"; String sql = "SELECT * FROM user"; Connection conn = null; Statement stmt = null; ResultSet rs = null; String str = ""; tr

javax.naming.namenotfoundexception [내부링크]

에러 javax.naming.namenotfoundexception: name [jdbc/web_sns]은(는) 이 컨텍스트에 바인딩되지 않았습니다. [jdbc]을(를) 찾을 수 없습니다. 해결방법 context.xml의 파일 이름이 제대로 됐는지 확인, 나는 content.xml로 되있어서 인식이 안됐었음

안드로이드 빌드 오류 implementation [내부링크]

gradle에 들어가서 implementation 'com.google.android.material:material:1.8.0' 으로 된 것을 밑의 코드로 바꾸어 주면 해결 됨 수정 코드 implementation 'com.google.android.material:material:1.6.0' 오류 내용 Can't determine type for tag '<macro name="m3_comp_assist_chip_container_shape">?attr/shapeAppearanceCornerSmall</macro>'

동빈나 jsp 게시판 만들기 2강 bootstrap 5를 이용한 코드 [내부링크]

해당 영상이 오래전 영상이라 부트스트랩이 지금이랑 많이 달라서 현재 최신버전인 bootstrap5를 이용한 코드로 임의로 바꾸었습니다. 공부하는데 참고 바랍니다. 해당 코드는 bootstrap을 따로 다운받아서 사용하는게 아닌 링크로 연결하여 css와 js를 사용하는 방식으로 만들었습니다. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <%-- bootstrap 5 적용 --%> <link href="https://cdn.jsdelivr.net/npm/bootst

파이썬 버추얼 마우스, python virtual mouse, 파이썬 가상 마우스, opencv [내부링크]

파이썬을 이용해 가상 마우스를 만들었습니다 관심 있으신 분들은 github 참고하시기 바랍니다. 영상 https://youtu.be/1gUyEt7ujow 쇼츠 https://youtube.com/shorts/wNx-1LfMxVg 깃허브 https://github.com/SEDO11/AR_Mouse_Python GitHub - SEDO11/AR_Mouse_Python Contribute to SEDO11/AR_Mouse_Python development by creating an account on GitHub. github.com

정보처리기사 꿀팁, 후기 [내부링크]

#정보처리기사 #수제비 #정보처리기사수제비 #정보처리 #정처기 졸업예정 23년 8월 실기 합격 인증 "정보처리기사 개쉬운 자격증아니야?" 라는 말을 들었을 때 이 사람들 한테 22년 3회차 실기 1번 문제를 풀어보라고 전해주고 싶다. 이거 풀 수 있으면 그 사람은 개 쉽다고 해도 됨 후기 나는 2년 제를 졸업하고 전과 편입으로 4년제 컴공을 왔는데 정처기를 따야 졸업을 시켜준다고 해서 정처기를 공부했다. 나는 필기 1트, 실기 3트만에 합격을 했다. 실기 1회차는 실수, 2회차는 조금 어려웠고, 3회차는 수제비 카페의 예상문제가 생각보다 많이 나와서 다행히 합격했다. 근데 이번 22년 3회차 실기부터는 코딩 문제도 엄청 어려울 수 있다는 걸 느끼게 됨 솔직히 1, 2, 3회차 통틀어서 3회차 코딩 문제가 제일 빡세긴 했다. 특히 1번 문제는 전공자들도 조금 힘들 수 있는 난이도 였음, 나는 20분 걸려서 풀기는 했으나 연산 한 번을 안해서 정답과 다른 게 16개 중에 4개 있었다.

git push 반 자동화 프로그램 파이썬 [내부링크]

깃의 주소를 넣으면 자동으로 깃에 업데이트 해주는 프로그램을 파이썬을 이용해 만들었다. commit 을 할 때에는 날짜를 넣어서 커밋을 해주도록 만들었다. # GUI 반 자동 git 관리 프로그램 from math import * from tkinter import * from datetime import datetime import os placeholder_text = "push 할 위치를 입력하세요" class Cont1: def __init__(self, frame): self.inframe = Frame(frame) self.inframe.pack(fill=X, anchor=N) self.edt1 = Entry(self.inframe, width=70) self.edt1.insert(0, placeholder_text) self.edt1.pack(side=RIGHT, padx=5, pady=10) self.btn1 = Button(self.inframe, text='실행',

이진 탐색 트리 개념, 삽입, 삭제 [내부링크]

이진 탐색 트리 정의 이진 탐색 트리(binary search tree)는 부모 노드가 두 개의 자식 노드를 갖는데, 왼쪽 자식 노드는 부모 노드보다 작은 값, 오른쪽 자식 노드는 부모 노드보다 큰 값을 갖는 트리 구조를 이진 탐색 트리 라고 한다. a는 30 노드가 32 노드의 왼쪽으로 가야 하는데 오른쪽에 있으므로 이진 탐색 트리가 아니다. 나머지 b, c는 이진 탐색 트리 구조를 만족 하므로 이진 탐색 트리이다. 이진탐색트리 삽입 값을 비교 하면서 옳바른 위치에 값을 넣어주면 됨 13은 15보다 작고 11보다 크므로 11노드의 오른쪽으로 삽입된다. 50은 15보다 크고 70보다 작으므로 70의 왼쪽으로 삽입된다. 이진 탐색 트리 삭제 삭제는 3가지 방법이 있다. 말단 노드인 경우 자식 노드가 1개인 경우 자식 노드가 2개인 경우 40은 말단 노드 이므로 삭제만 실행하면 된다. 20은 25라는 자식노드가 하나 있으므로 20을 삭제하고 자식인 25을 올려서 30에 붙혀주면 된다.

프로그래머스 120808 분수의 덧셈 파이썬 풀이 코드 [내부링크]

import fractions # 파이썬 분수 모듈 def solution(denum1, num1, denum2, num2): a = (denum1 * num2) + (denum2 * num1) #분자 b = num1 * num2 #분모 r = fractions.Fraction(a, b) #분수 계산 함수, 자동으로 기약분수로 만들어줌 answer = [r.numerator, r.denominator] #기약분수 분모, 분자 return answer

120924 프로그래머스 다음에 올 숫자 파이썬 코드 풀이 [내부링크]

def solution(common): answer = 0 # a와 b를 통해 등차수열인지 등비수열인지 확인 a = common[1] - common[0] b = common[2] - common[1] if a == b: # 등차수열인경우 answer = common[-1] + a # 마지막값에 공차를 더함 else: # 등비 수열인경우 c = common[1] // common[0] # 공비를 구함 answer = common[-1] * c # 마지막값에 공비를 더함 return answer # 값 출력

ERwin ERD 개체관계도 이미지, 파일 저장, 추출 [내부링크]

ERwin 에서 ERD를 그리고 난 후에 사진, 파일로 저장, 추출하는 방법 Tools를 누르고 Slected를 누른다. 2. 맨위의 파일을 눌러 모두 선택한다, 저장위치를 지정한다, 저장할 파일의 타입을 설정한다, 저장을 하면 원하는 파일 형태로 ERD가 저장이 된다. ERD를 추출한 이미지 예시

42584 프로그래머스 주식가격 [내부링크]

def solution(prices): answer = [] for i in range(len(prices)): # 0~n까지 cnt = 0 # 비교 값보다 작은 수를 만날 때 까지 카운트 하는 변수 for j in range(i+1, len(prices)): #i+1~n까지 cnt += 1 # 카운트 if prices[i] > prices[j]: # 비교 값이 다음 값보다 작다면 break # for문 종료 answer.append(cnt) # list에 저장 return answer

백준 1463 1로 만들기 파이썬 다이다믹 프로그래밍(DP) [내부링크]

처음에는 이 식이 이해 되지 않았다. dp[i] = dp[i-1] + 1 이 식의 뜻은 예를들어 i = 10 인경우 9를 1로 만드는 최소 경우의 수에서 +1을 해줘라, 10 - 1을 해주고 1을 만드는 최소의 경우의 수를 구하는 공식이다. + 1을 해주는 이유는 10에서 -1을 해주는 연산을 한 번 했으니 +1을 해주는 것이었다. dp[i//2] + 1, dp[i//3] + 1 이것도 나누면서 연산을 한 번 수행했으므로 + 1을 해주는 것이었다. 10을 1로 만든다고 가정했을 때 나오는 연산 10 -> 5 -> 4 -> 2 -> 1 (/2, -1, /2, -1) 연산 4개 10 -> 9 -> 3 -> 1 (-1, /3, /3) 연산 3개 이런식으로 나오는데 둘 중에서 연산의 수가 제일 작은 것은 3개 이므로 10을 입력하면 3이 나온다. 최종 코드 n = int(input()) dp = [0] * (10**6 +1) dp[2] = 1 dp[3] = 1 for i in range(4

파일구조 내부 정렬, 대체 선택, 자연 선택 [내부링크]

파일의 정렬 정의 하나의 파일을 여러개롤 분할하여 내부 정렬 기법으로 정렬 분할 된 파일은 서브파일이라고 부름 분할 된 서브파일의 정렬을 런이라 부름 입력파일 레코드 키 값 예시 109 49 34 68 45 2 60 38 28 47 16 19 34 55 98 78 76 40 35 86 10 27 61 92 99 72 11 2 29 16 80 73 18 12 89 50 46 36 67 93 22 14 83 44 52 59 10 38 76 16 24 85 내부 정렬 파일을 n개 레코드씩 분할 n = 5 라면 5개씩 분할 한다. 109 49 34 68 45 2 60 38 28 47 16 19 34 55 98 78 76 40 35 86 10 27 61 92 99 72 11 2 29 16 80 73 18 12 89 50 46 36 67 93 22 14 83 44 52 59 10 38 76 16 24 85 이렇게 나뉜 것들을 오름차순으로 정렬하여 런에 넣는다. RUN1 : 34 68 45 49

리모컨을 이용해서 전등 켜기, 끄기 step1 (아두이노, IR 센서, 서보모터) [내부링크]

안녕하세요~ SEDO입니다. 편입하고 나서 저번 주 토요일까지 시험을 봤는데 저희 대학만 그런 건지 나머지 학교들도 그런지 모르겠는데 저희는 토요일도 시험을 보더라고요 ㅋㅋㅋㅋㅋㅋ 그래서 이제 중간도 끝났겠다 집에서 쓸만한 거 뭐 만들지 하다가 갑자기 제 방 전등을 리모컨으로 키고 끄면 어떨까 싶어서 아두이노 우노로 프로토 타입을 만들어 봤습니다. 그런데 다 만들고 인터넷에서 찾아보니 아두이노 나노랑 보조배터리를 이용해서 좀 더 이쁘고 작게 만든 게 여럿 있더라고요. 그래서 나중에 아두이노 나노랑 보조배터리를 이용해서 만드는 것도 시간이 되면 만드는 것과 함께 한 번 올려 보겠습니다. 일단 처음에는 ir 센서를 이용하는 것을 알려드리겠습니다. 먼저 리모컨의 버튼 값을 알아내야 합니다. 처음에 IR 센서를 사용하기 위해서는 아두이노 ide에서 라이브러리를 추가로 다운로드해 주어야 합니다. 툴 -> 라이브러리 관리를 클릭합니다. 맨 위의 검색창에 irremote라고 치면 IRremote