티스토리

도니 개발노트
검색하기
블로그 홈

블로그 홈

도니 개발노트

donie.tistory.com/m
신고

donie 님의 블로그입니다.

구독자
1
방명록 방문하기
구독하기

주요 글 목록

  • Window10 - Node.js 설치 1. 설치파일 다운로드 및 실행 nodejs.org/ko/download/ 다운로드 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 컴퓨터에 맞는 os선택하여 설치. 나는 Windows 64bit 다운받은 파일을 실행하여 전부 default로 설치 진행하였다. 2. 설치 확인 cmd창을 열어서 node -v 명령을 입력해서 nodejs의 버전을 확인할 수 있다. 공감수 0 댓글수 0 2021. 3. 17.
  • Window - Visual Studio Code 설치 1. 설치파일 다운로드 및 실행 code.visualstudio.com/download Download Visual Studio Code - Mac, Linux, Windows Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications. code.visualstudio.com "Code로 열기" 작업을 Windows 탐색기 파일의 상황에 맞는 메뉴에 .. 공감수 0 댓글수 0 2021. 3. 16.
  • VisualStudio 2017 Express 설치 및 새 프로젝트 1. 설치파일 다운로드 및 실행 aka.ms/vs/15/release/vs_WDExpress.exe 2. 파일 - 새프로젝트 공감수 0 댓글수 0 2021. 3. 15.
  • 1-3) 기본적인 데이터 표현 방법 1. 상수 1) 리터럴 상수 직접 값으로 표현하는 상수. 정수형, 실수형, 문자, 문자열 상수가 있다. 문자 상수는 작은 따옴표로 묶고, 문자열 상수는 큰 따옴표로 묶어서 표현한다. 2) 심볼릭 상수 const지시어로 선언하는 변수. ex. const int a = 3 에서 a는 심볼릭 상수이고, 3은 리터럴 상수이다. 2. 연산자 1) 산술 연산자 동일한 자료형의 피 연산자를 연산하면 동일한 자료형의 결과를 얻게 된다. 즉, 정수형/정수형은 정수형의 몫을 구한다. 2) 증감 연산자 전위 증감 연산자 vs 후위 증감 연산자 3) 조건 연산자 ? 기호 조건식?식1:식2 조건식이 참인 경우는 식1을 수행하고 / 조건식이 거짓인 경우는 식2를 수행한다. 3. 사용자 정의 자료형 1) typedef 사용자가 새.. 공감수 0 댓글수 0 2021. 1. 1.
  • 1-1) 왜 C를 배워야 하나요? 1983년 미국 국가 표준협회에서 ANSI C 발표. 하드웨어 제어 분야, 시스템 API를 직접 다루는 경우, 속도가 아주 중요한 경우에 사용된다. C언어 개발환경 비주얼스튜디오2017버전에서 Win32콘솔응용프로그램 만드는 방법 새 프로젝트에서 Visual C++ - Windows 데스크톱 - Windows 데스크톱 마법사 선택. 다음 콘솔 애플리케이션(.exe)를 선택하고 빈 프로젝트 체크 Visual Studio에서는 C와 C++의 소스코드 템플릿이 동일하다. 단, 소스파일의 확장자는 .c로 지정해야 한다. 키로 디버깅하지 않고 실행. 공감수 0 댓글수 0 2020. 12. 31.
  • 1-2) 자바 프로그램 구조 및 데이터 타입 1. 자바 프로그램은 하나의 .java 파일에 하나의 클래스를 정의한다. 클래스 내부에 실행에 필요한 변수나 메서드 등을 정의한다. 주석문 // 단일 주석문 /* 여러 줄 주석문 */ /** javadoc 형태의 주석처리 */ ※ 실습 eclipse 실행. File - New - Java Project 메뉴 선택 -> firstProject라는 이름의 프로젝스 생성. src 마우스 오른쪽 클릭 - New - Class 선택 -> FirstApp이름, public, public static void main선택하여 클래스 생성. 아래와 같이 main메서드 안에 프린트하는 함수를 넣는다. package firstProject; public class FirstApp { public static void ma.. 공감수 0 댓글수 0 2020. 12. 31.
  • 1-1) 자바언어의 구조와 기본문법 1. 자바 언어 개요 1) 탄생 배경 Green Project에서 가정용 전자기기에서 사용되는 작은 컴퓨터 언어를 디자인함. Virtual Machine에서 동작하는 중간코드를 생성. 이식성이 높은 언어를 디자인함. 절차지향 + 객체지향 언어인 C++을 기반으로 개발하게 됨. -> 완벽한 객체지향인 Oak언어. -> 이후 JAVA로 이름이 바뀜. 2) 특징 - 객체지향 object-oriented. 재사용성을 높일 수 있다. - 분산처리에 용이하다. 인터넷, 네트워크와 같은 환경에서 실행되도록 설계된 언어이다. - interpreter에 의해 실행된다. interpreter언어이다. (↔ compile언어) 포인터를 사용하지 않고 자동으로 garbage collection를 실행한다. 3) 자바 플랫폼 .. 공감수 0 댓글수 0 2020. 12. 31.
  • Eclipse 새 프로젝트 생성 eclipse실행 후 Create a Java project를 눌러서 새 프로젝트를 만든다. Project name만 입력하고 나머지는 디폴트 설정. 뭔지 몰라서 Create했다. src폴더에서 오른쪽 마우스 클릭 - New - Class 를 클릭하여 클래스를 생성할 수 있다. main함수를 작성하고 싶으면 클래스 안에 main을 입력 후 를 입력하면 자동으로 아래와 같이 입력된다. 또, sysout을 입력한 후 를 입력하면 자동으로 아래와 같이 입력된다. 실행은 작성 중인 클래스 파일에서 마우스 오른쪽 클릭 - Run As - Java Application을 통해서 실행해도 되고, 키로 실행해도 된다. 공감수 0 댓글수 0 2020. 12. 31.
  • 자바 통합 개발 툴 설치 (Eclipse) 1. Eclipse 다운로드 및 설치 https://www.eclipse.org/ The Community for Open Innovation and Collaboration | The Eclipse Foundation The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 375 open source projects, including runtimes, tools and frameworks. www.eclipse.org 위 홈페이지에 가서 우측 상단의 Downloads에 들어간다. Download x86_64 클릭하여 다운로드. 설치파일을 실행하여 다운로드를 진행하면 되는데, 나는 설치파일을 더블클.. 공감수 0 댓글수 0 2020. 12. 31.
  • 자바 개발 환경 구축 - JDK 1.6 설치 1. JDK (Java Development Kit) 설치 본 과정에서는 JDK 1.6버전을 다룬다. Java 다운로드 www.oracle.com/java/technologies/oracle-java-archive-downloads.html 위 링크에서 원하는 SE/EE/ME/FX버전을 선택하여 다운로드 한다. 나는 Java SE 6 (1.6버전)을 선택하여 다운로드 하였다. 다운로드시 Oracle에 회원가입이 필수이다. 다운받은 설치파일을 실행하여 설치를 진행한다. 2. 환경변수 설정 시작 - 설정 - 제어판 - 시스템 및 보안 - 시스템 탭에서 고급 시스템 설정을 연다. 고급 탭에서 환경변수 클릭. 시스템 변수 영역에서 path변수를 편집하여 아래 경로를 추가한다. C:\Program Files\Ja.. 공감수 0 댓글수 0 2020. 12. 31.
  • 프로그래머스 - 짝지어 제거하기 1. 문제 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 제한사항 문자열의 길이 : 1,000,000이하의 자연수 문자열은 모두 소문자로 이루어져 있습니다. .. 공감수 0 댓글수 0 2020. 12. 16.
  • 프로그래머스 - 최대 용량이 정해진 FIFO 큐 클래스 1. 문제 2. 소스코드(Python3) class MyStack(object): def __init__(self): self.lst = list() def push(self, x): self.lst.append(x) def pop(self): return self.lst.pop() def size(self): return len(self.lst) class MyQueue(object): def __init__(self, max_size): self.stack1 = MyStack() self.stack2 = MyStack() self.max_size = max_size def qsize(self): return self.stack1.size() def push(self, item): if self.qsi.. 공감수 0 댓글수 0 2020. 12. 8.
  • 프로그래머스 - 방문 길이 1. 문제 문제 설명 게임 캐릭터를 4가지 명령어를 통해 움직이려 합니다. 명령어는 다음과 같습니다. U: 위쪽으로 한 칸 가기 D: 아래쪽으로 한 칸 가기 R: 오른쪽으로 한 칸 가기 L: 왼쪽으로 한 칸 가기 캐릭터는 좌표평면의 (0, 0) 위치에서 시작합니다. 좌표평면의 경계는 왼쪽 위(-5, 5), 왼쪽 아래(-5, -5), 오른쪽 위(5, 5), 오른쪽 아래(5, -5)로 이루어져 있습니다. 예를 들어, ULURRDLLU로 명령했다면 1번 명령어부터 7번 명령어까지 다음과 같이 움직입니다. 8번 명령어부터 9번 명령어까지 다음과 같이 움직입니다. 이때, 우리는 게임 캐릭터가 지나간 길 중 캐릭터가 처음 걸어본 길의 길이를 구하려고 합니다. 예를 들어 위의 예시에서 게임 캐릭터가 움직인 길이는 9.. 공감수 0 댓글수 0 2020. 12. 7.
  • [코드리뷰] 프로그래머스 - 사탕 담기 1. 문제 2. 소스코드 (Python3) from itertools import combinations def solution(m, weights): answer = 0 for i in range(len(weights)): combi = combinations(weights, i) answer += [sum(candies) for candies in combi].count(m) return answer 3. 고찰 나는 재귀함수를 이용해서 풀었는데, 조합을 이용해서 풀 수 있었다. 재귀함수는 계속해서 함수를 호출하기 때문에 아마 시간복잡도 측면에서 조합 함수를 이용하는 것이 더 효율적일 것 같다. 공감수 0 댓글수 0 2020. 12. 6.
  • [코드리뷰] 프로그래머스 - 주사위 게임 (product함수, sum함수, int함수) 1. 문제 2. 소스코드 (Python3) from itertools import product def solution(monster, S1, S2, S3): p = product(range(S1), range(S2), range(S3)) case = len([x for x in p if sum(x) + 4 not in monster]) return int(case / (S1 * S2 * S3) * 1000) 3. 고찰 1) product 함수 여러 list에서 원소를 하나씩 뽑아 모든 조합을 찾을 때 사용한다. 이를 곱집합 이라고 한다. from itertools import product prod = product(list1, list2, list3) ex. list1 = [0, 1, 2], list.. 공감수 0 댓글수 0 2020. 12. 6.
  • [코드리뷰] 프로그래머스 - 세 소수의 합 (루트, combinations 함수, count 함수) 1. 문제 2. 소스코드 (Python3) from itertools import combinations def solution(n): sieve = [True] * n for i in range(2, int(n ** 0.5) + 1): if sieve[i]: for j in range(i * 2, n, i): sieve[j] = False prime_numbers = [i for i in range(2, n) if sieve[i]] return [sum(c) for c in combinations(prime_numbers, 3)].count(n) 3. 고찰 1) 루트값 구하기 매번 math모듈의 sqrt(n)함수를 이용하였는데, n ** 0.5 로 구할 수 있다. 2) combinations 함수 조합.. 공감수 0 댓글수 0 2020. 12. 6.
  • 프로그래머스 - FloodFill 1. 문제 2. 소스코드 (Python3) DFS 코드 (성공) def inRange(n, m, i, j): if i=n or j=m: return False return True def DFS(image, visit, n, m, i, j): # 상하좌우 di = [-1, 1, 0, 0] dj = [0, 0, -1, 1] stack = [(i, j)] while stack: i1, j1 = stack.pop() visit[i1][j1] = True for d in range(4): i2 = i1 + di[d] j2 = j1 + dj[d] if not inRange(n, m, i2, j2): continue if visit[i2][j2]: continue if image[i1][j1] == image[i2.. 공감수 0 댓글수 0 2020. 12. 5.
  • 프로그래머스 - 문자열 압축 1. 문제 2. 소스코드 def solution(s): # len(s)개 단위로 잘라 압축하는 경우 answer = len(s) # 1 ~ len(s)-1개 단위로 잘라 압축하는 경우 for l in range(1, len(s)-1): # 첫번째 압축 문자열 comp = [1, s[:l]] # 다음 문자열들에 대해서 처리 for i in range(1, len(s)//l + bool(len(s)%l)): word = s[i*l:(i+1)*l] # 앞 문자와 같으면 숫자 +1 if word == comp[-1]: comp[-2] += 1 # 앞 문자와 다르면 새로 추가 else: comp += [1, word] # int -> string으로 변환, 1이면 삭제 for i in range(0, len(co.. 공감수 0 댓글수 0 2020. 12. 5.
  • 프로그래머스 - 세 소수의 합 1. 문제 2. 소스코드(Python3) def Eratos(n): if n N번 반복 j에 대한 for loop -> N/i번 반복 따라서 위 함수의 시간 복잡도는 O(N^2)이다. 2) add : 세 소수를 더하는 함수 1) 알고리즘 odd의 세 원소를 꺼낸다. 세 값을 더한 결과가 주어진 수 n과 같은지 비교하여 횟수를 센다. 2) 시간복잡도 odd의 원소 개수가 N이라고 하자. odd의 세 원소에 대해 삼중 for문 -> O(N^3) 3) solution : main함수 1) 알고리즘 n이하의 소수를 모두 구하여 odd리스트에 저장한다. add함수를 이용하여 세 숫자를 더하여 n이 되는 경우의 수를 센다. 2) 시간복잡도 Eratos함수의 시간 복잡도는 O(N^2)이다. add함수는 주어진 입력이.. 공감수 0 댓글수 0 2020. 12. 4.
  • 프로그래머스 - 대중소 괄호 짝 맞추기 1. 문제 2. 소스코드 def solution(s): stack = [] match = {'(':')', '{':'}', '[':']' } for x in s: # 여는 괄호 if x in match: stack.append(x) # 닫는 괄호 else: if not stack: return False if match[stack.pop()] != x: return False return not stack 3. 고찰 1) 알고리즘 여는 괄호이면 스택에 push 닫는 괄호이면 (1) 스택이 비어있는지 검사 (2) 스택의 top과 매치하는 괄호인지 검사한다. 문자열 s의 모든 괄호에 대해 위 과정을 반복한 후 스택이 비어있으면 True를 리턴한다. 2) 시간복잡도 문자열 s의 모든 괄호에 대해 for loo.. 공감수 0 댓글수 0 2020. 12. 4.
  • 프로그래머스 - 좌석 구매 1. 문제 2. 소스코드 (Python3) def solution(seat): answer = len(seat) Set = {} for s in seat: index = 100000*s[0] + s[1] if index in Set: answer -= 1 else: Set.add(index) return answer 3. 고찰 1) 알고리즘 모든 seat에 대해서 set에 넣고, 이미 해당 좌석이 set에 들어있다면 정답에서 한 명씩 빼는 알고리즘. 이때 좌석은 100000 * 100000 크기로 2차원이므로 좌석의 좌표는 x좌표 * 100000 + y좌표로 계산하였다. 2) 시간복잡도 모든 seat의 원소에 대해서 for loop -> O(N) Set에 해당 좌표(index)가 있는지 확인 -> O(N.. 공감수 0 댓글수 0 2020. 12. 4.
  • 프로그래머스 - 더 맵게 1. 문제 programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 2. 소스코드 (Python3) import heapq def solution(scoville, K): answer = 0 scoville = [s for s in scoville] heapq.heapify(scoville) while True: tmp1 = heapq.heappop(scoville) if tmp1 >= K: break if not sc.. 공감수 0 댓글수 0 2020. 12. 3.
  • 프로그래머스 - 큰 수 만들기 1. 문제 programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 2. 소스코드 (Python3) def solution(number, k): stack = [] for n in number: while stack and stack[-1] O(N) 리스트.pop() -> O(1) 리스트.append() -> O(1) 따라서 위 코드의 시간복잡도는 O(N)이다. 공감수 0 댓글수 0 2020. 12. 3.
  • 프로그래머스 - 가장 큰 수 1. 문제 programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 2. 소스코드 (Python3) import functools def comp(a,b): if int(a+b) int(b+a): return -1 return 0 def solution(numbers): strnum = [str(n) for.. 공감수 0 댓글수 0 2020. 12. 3.
  • 프로그래머스 - 체육복 1. 문제 programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 2. 소스코드 (Python3) def solution(n, lost, reserve): answer = 0 student = {} for x in lost: student[x] = student.get(x, 1) -1 for x in reserve: student[x] = student.get(x, 1) +1 lost = [k for k,v in student.it.. 공감수 0 댓글수 0 2020. 12. 3.
  • 프로그래머스 - 완주하지 못한 선수 1. 문제 programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 2. 소스코드 (Python3) def solution(participant, completion): hash = {} for p in participant: hash[p] = hash.get(p, 0) + 1 for c in completion: hash[c] -= 1 ans = [k for k, v in hash.items() if v > 0.. 공감수 0 댓글수 0 2020. 12. 3.
  • 프로그래머스_문자열 압축 1. 문제 2. 소스코드 (Python3) def solution(s): # wordlen=len(s)이면 압축문자열 길이 = len(s) answer = len(s) for wordlen in range(1, len(s)-1): #문자길이가 1~len(s)-1까지 반복. wordcnt = len(s)//wordlen #문자뭉텅이 개수 = 전체문자열길이에서 문자길이 나눈 몫 comp = False #False=압축x, True=압축o compcnt = 0 #압축되는 문자뭉텅이 개수 compstr = '' #압축된 문자열 ## j번째 문자뭉텅이 처리 for j in range(wordcnt): word1 = s[j*wordlen: (j+1)*wordlen] word2 = s[(j+1)*wordlen: (j.. 공감수 0 댓글수 0 2020. 11. 4.
  • [코드리뷰] 프로그래머스_H-Index 1. 문제 programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 2. 소스코드 (Python3) def solution(citations): citations = sorted(citations) l = len(citations) for i in range(l): if citations[i] >= l-i: return l-i return 0 3. 고찰 1) 알고리즘 citations를 오름차순 정렬.. 공감수 0 댓글수 0 2020. 11. 3.
  • 프로그래머스_H-Index 1. 문제 2. 소스코드 def solution(citations): h=len(citations) while h: higher = 0 lower = 0 for c in citations: if c>=h: higher += 1 else: lower += 1 if higher>=h and: return h h-=1 return h 3. 고찰 1) 알고리즘 n편 중 h편이기 때문에 h의 초기값을 len(citations)로 설정했다. 최대값을 찾는 문제이므로 위에서부터 내려가며 h값을 찾았다. while loop를 돌면서 h번 이상 인용된 논문 개수는 higher에, 나머지 논문 개수는 lower에 세었다. higher개수가 h편 이상이면 h를 리턴하였다. h에 -1 해주었다. 2) 시간복잡도 입력 리스트 .. 공감수 0 댓글수 0 2020. 11. 3.
  • Quick Sort 파이썬 구현 1. 소스코드 import random def QuickSort(list): if len(list) 공감수 0 댓글수 0 2020. 11. 2.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.