memostack
article thumbnail
파이썬(Python)의 특징 정리
Language/Python 2021. 1. 14. 08:07

파이썬의 특징 문법이 쉽고 간결하여, 비교적 쉽게 배울 수 있음 상대적으로 쉽다는 뜻으로 프로그래밍을 처음 접하는 사람한테는 어려울 수 도 있음 foo = 1 print(foo) # 1 foo = "Hello Python" print(foo) # Hello Python 다른 언어에 비해 개발속도가 상당히 빨라서, 나는 프로토 타입을 만들때 파이썬을 주로 사용한다 // Java로 Hello World 찍기 public class Main { public static void main(String[] args) { System.out.println("Hello, World"); } } # Python으로 Hello World 찍기 print("Hello, World"); 무료로 제공해주기 때문에 개발하는데 ..

article thumbnail
Python 문자와 문자열 다루기
Language/Python 2020. 11. 26. 21:46

문자와 문자열 파이썬에서는 문자와 문자열을 따로 구분하지 않는다. 문자와 문자열을 사용할 때는 홑 따옴표(') 또는 쌍 따옴표 (") 둘 다 사용 가능하다. 문자 위에서 말했듯이 문자와 문자열을 따로 구분하지 않지만, 굳이 문자를 표현하면 문자 한 글자를 따옴표로 감싼다 alphabet_a = 'a' print(alphabet_a) # a alphabet_b = "b" print(alphabet_b) # b print('c') # c print("d") # d 홑 따옴표(')와 쌍 따옴표(") 둘 다 사용 가능하다 문자열 여러 개의 문자를 따옴표로 감싼다. 마찬가지로 홑 따옴표(')와 쌍 따옴표(") 둘 다 사용 가능하다 greet = "Hello, Python!" print(greet) language..

article thumbnail
Python 사칙연산을 통한 실수형 데이터 다루기 (+, -, *, **, /, //)
Language/Python 2020. 11. 26. 21:45

더하기 연산 + num1과 num2라는 변수를 생성하여, 2개의 변수를 더한 값을 print() 함수로 출력한다 수학에서 사용하는 더하기(+)와 동일하다 num1 = 10 num2 = 6 print(num1 + num2) # 16 빼기 연산 - num1 = 10 num2 = 6 print(num1 - num2) # 4 곱하기 연산 * 프로그래밍에서는 곱하기를 x 기호 대신에 * 를 사용한다. 읽을때는 *를 '에스테르크'라고 읽음 num1 = 10 num2 = 6 print(num1 * num2) # 60 제곱 연산 (**) * 1개를 사용하면 단순히 곱하기 연산이지만, ** 2개를 사용하면 제곱(pow) 연산이된다. print(2 ** 4) # 16 2^4 = 2 * 2 * 2 * 2 = 16 나누기 연..

article thumbnail
Windows에 Python 3.7.9 설치하기
Language/Python 2020. 11. 26. 21:42

MacOSX에서 설치하려면 아래 글 참고해주세요 2020/11/26 - [Language/Python] - MacOS에 Python 3.7.9 버전으로 설치하기 MacOS에 Python 3.7.9 버전으로 설치하기 Python을 사용하려면 설치를 먼저 해야하기 때문에, 우선 설치부터 진행해본다. Python3 설치 파일 다운로드 파이썬을 설치하는 방법은 여러가지 방법이 있다. (본 글에서는 파이썬 공식 페이지에서 memostack.tistory.com 윈도우에서 Python 설치하기 아래 사이트에 접속 www.python.org/ Welcome to Python.org The official home of the Python Programming Language www.python.org .msi 인스톨..

article thumbnail
MacOS에 Python 3.7.9 버전으로 설치하기
Language/Python 2020. 11. 26. 21:41

Python을 사용하려면 설치를 먼저 해야하기 때문에, 우선 설치부터 진행해본다. 윈도우에서 파이썬을 설치하고 싶은 경우 아래글 참고해주세요. 2020/11/26 - [Language/Python] - Windows에 Python 3.7.9 설치하기 Windows에 Python 3.7.9 설치하기 MacOSX 에서 설치하려면 아래 글 참고해주세요 2020/11/26 - [Language/Python] - MacOS에 Python 3.7.9 버전으로 설치하기 MacOS에 Python 3.7.9 버전으로 설치하기 Python을 사용하려면 설치를 먼저 해야하기 때.. memostack.tistory.com Python3 설치 파일 다운로드 파이썬을 설치하는 방법은 여러가지 방법이 있다. (본 글에서는 파이썬 ..

article thumbnail
백준 10996번 - 별 찍기 - 21 (Python3)
Algorithm/Beakjoon 2020. 6. 29. 20:55

본 문제는 백준 알고리즘(https://www.acmicpc.net/)에게 있습니다. 문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 예제 # 입력 1 # 출력 * # 입력 2 # 출력 * * * * # 입력 3 # 출력 * * * * * * * * * Coding - Python3 규칙 찾기 n이 1일때는 별(*) 하나를 반환하다. 나머지 경우 (n이 2이상인 경우) 2*n 줄 만큼 별이 그려진다. 한 열의 길이는 n이다. 별(*)과 띄어쓰기( )가 번갈아가며 나온다. 홀수번째 줄은 별(*)부터 시작한다. 짝수번째 줄은 띄어쓰기( )부터 시작한다. # -*- coding: utf-8 -*- import sys def solution(k): if 1 == k: print("*") return r..

article thumbnail
백준 2446번 - 별 찍기 - 9 (with Python3)
Algorithm/Beakjoon 2020. 6. 23. 21:59

본 문제는 백준 알고리즘(https://www.acmicpc.net/)에게 있습니다. 문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 예제 # 입력 5 # 출력 ********* ******* ***** *** * *** ***** ******* ********* Coding - Python3 상단, 하단을 나눠서 별을 찍는다. 규칙을 파악한다. 상단: 2 * n - 1 (n이 점차 감소) 만약 n = 5 라면, 9, 7, 5, 3, 1 하단: 2 * n - 1 (n이 점차 증가) 만약 n = 5 라면, 1, 3, 5, 7, 9 # -*- coding: utf-8 -*- import sys def solution(num): # 상단 별 for i in range(num, 0, -1): print..

article thumbnail
백준 2523번 - 별 찍기 - 13 (with Python3)
Algorithm/Beakjoon 2020. 6. 22. 21:05

본 문제는 백준 알고리즘(https://www.acmicpc.net/)에게 있습니다. 문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 예제 # 입력 3 # 출력 * ** *** ** * Coding - Python3 for 문 2개를 이용해서 '상단 별'과 '하단 별'을 그린다. # -*- coding: utf-8 -*- import sys def solution(num): # 상단 별 for _ in range(num): print("*" * (_ + 1)) # 하단 별 for _ in range(num - 1, 0, -1): print("*" * _) if __name__ == "__main__": num = int(sys.stdin.readline()) solution(num) 비슷한 문제..

article thumbnail
백준 5543번 - 상근날드 (with Python3)
Algorithm/Beakjoon 2020. 6. 22. 20:42

본 문제는 백준 알고리즘(https://www.acmicpc.net/)에게 있습니다. 문제 상근날드에서 가장 잘 팔리는 메뉴는 세트 메뉴이다. 주문할 때, 자신이 원하는 햄버거와 음료를 하나씩 골라, 세트로 구매하면, 가격의 합계에서 50원을 뺀 가격이 세트 메뉴의 가격이 된다. 햄버거는 총 3종류 상덕버거, 중덕버거, 하덕버거가 있고, 음료는 콜라와 사이다 두 종류가 있다. 햄버거와 음료의 가격이 주어졌을 때, 가장 싼 세트 메뉴의 가격을 출력하는 프로그램을 작성하시오. 예제 # 입력 800 700 900 198 330 # 출력 848 # 입력 1999 1999 100 189 100 # 출력 150 Coding - Python3 버거 종류(첫번째, 두번째, 세번째 줄)에서 가장 작은 값을 고른다. 음료..

article thumbnail
백준 14681번 - 사분면 고르기 (with Python3)
Algorithm/Beakjoon 2020. 6. 22. 20:33

본 문제는 백준 알고리즘(https://www.acmicpc.net/)에게 있습니다. 문제 흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다. 예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다. 점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다. 예제 # 입력 12 5 # 출력 1 # 입력 9 -13 # 출력 4 Coding - Python3 if문을 이용하여 x와 y..

article thumbnail
Python3 문자열에서 특정 문자열 찾기
Language/Python 2020. 4. 12. 20:13

문자열 개수 찾기 문자열의 개수를 찾을 때는 str 의 count() 메소드를 이용한다. greet = "Hello, World!" print("`o` count:", greet.count("o")) print("`l` count:", greet.count("l")) `o` count: 2 `l` count: 3 문자열이 있는지 확인 str 의 find() 메소드를 이용한다. find() 메소드는 찾는 문자열이 있는 경우, 찾은 문자열의 첫번째 인덱스 값을 반환한다. 찾은 문자열이 여러개인 경우 첫번째 문자열의 첫번째 인덱스를 반환한다. 찾는 문자열이 없는 경우, -1 을 반환한다. greet = "Hello, Python" print(greet.find("Python")) # 찾은 문자열의 첫번째 인덱..

article thumbnail
파이썬 스레드(Thread) 특징과 GIL
Language/Python 2020. 4. 10. 15:12

파이썬의 정책에 의해 멀티 스레드 방식으로 프로그램을 구현하더라도, (번갈아가면서) 하나의 스레드만 실행하게된다. 그래서, 파이썬에서는 멀티 스레드를 통해 원하던 효과를 제대로 볼 수 없다. 아래 GIL에 의해서 하나의 스레드만 실행이 된다. GIL(Global Interpreter Lock)? 파이썬은 모든 자원을 하나의 스레드에서 컨트롤할 수 있게 글로벌 락(Global Lock)을 걸어둔다. GIL 은 하나의 스레드(Thread)에게 모든 자원(Resource)을 점유할 수 있게 해준다. (다른 스레드는 Acquire 할 수 없음) 그렇다고 스레드가 쓸모없는 것은 아니다. 하나의 스레드가 I/O 작업을 하는 동안은 다른 스레드가 점유할 수 있다. I/O 작업이 없는 프로그램이라면, 멀티 스레드 방식..

article thumbnail
파이썬 파일과 이미지 다루기(쓰기, 읽기, 추가하기)
Language/Python 2020. 4. 9. 20:57

1. 파일 다루기 파이썬에서는 파일을 다룰때, open() 메소드를 사용한다. 1.1. 파일 쓰기 파일을 쓸 때는 "w" (Write) 를 사용한다. (아래 코드 참고) dest = "/Users/taehongkim/Desktop/test.txt" try: f = open(dest, "w") # 파일을 쓸 때는 "w" 옵션을 사용한다. f.write("Hello, World!") # 파일의 내용 finally: f.close() # 작업이 끝나면 `close()` 를 통해 리소스를 해제해준다. close() 메소드를 통해 파일 리소스를 해제해준다. 파일을 작성하는 도중 오류가 발생할 가능성이 있기 때문에 try-finally 를 이용하여 close() 가 반드시 실행될 수 있도록 한다. 위 방법처럼 작성..

article thumbnail
KAKAO 2020 공채 코딩 테스트 - 문자열 압축 (with Python3)
Algorithm 2020. 4. 4. 16:54

본 문제는 KAKAO 2020 블라인드 코딩 테스트 문제 중에 `문자열 압축` 문제이다. 문제 문제를 보려면 아래 `더보기`를 누르면 된다. 더보기 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 aabbaccc의 경우 2a2ba3c(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, abcab..

article thumbnail
백준 15650번 - N과 M(2) - 순열 (with Python3)
Algorithm/Beakjoon 2020. 4. 3. 14:41

본 문제는 백준 알고리즘(https://www.acmicpc.net/)에게 있습니다. 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 예제 # 입력 4 2 # 출력 1 2 1 3 1 4 2 3 2 4 3 4 # 입력 4 4 # 출력 1 2 3 4 Coding - Python3 기본 순열 문제에서 코드 몇개만 수정하면 된다. 참고. 기본 순열 문제 2020/04/03 - [Algorithm/Beakjoon] - 백준 Ex.15649번 - N과 M(1) 순열 문제 (with Python3) 백준 Ex.15649번 - N과 M(1) 순열 문제 (with ..

article thumbnail
백준 15649번 - N과 M(1) 순열 문제 (with Python3)
Algorithm/Beakjoon 2020. 4. 3. 14:31

본 문제는 백준 알고리즘(https://www.acmicpc.net/)에게 있습니다. 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 예제 # 입력 3 1 # 출력 1 2 3 # 입력 4 2 # 출력 1 2 1 3 1 4 2 1 2 3 2 4 3 1 3 2 3 4 4 1 4 2 4 3 Coding - Python3 대표적인 순열 문제로 푸는 방식만 익히면 쉽게 문제를 풀 수 있다. for 문을 이용하는 방식과 재귀함수를 이용하는 방식이 있는데, 재귀 함수로 푸는것이 이해하기 쉽다. 아래 코드는 stack 과 재귀 함수를 이용하여 문제를 풀었다. # -*- coding: utf-8 -..

article thumbnail
Programmers - 가장 큰 수 (Python3)
Algorithm 2020. 4. 2. 18:05

본 문제의 저작권은 프로그래머스(https://programmers.co.kr/)에 있습니다. 문제 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. Coding - Python3 처음에는 뒤에 0을 붙여서 모두 같은 자릿수를 만든다음 크기를 비교하면 된다고 생각했다. 하지만, 반례가 존재한다. [12..

article thumbnail
Programmers - K번째수 (Python3)
Algorithm 2020. 4. 2. 17:49

본 문제의 저작권은 프로그래머스(https://programmers.co.kr/)에 있습니다. 문제 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solu..

article thumbnail
미로 찾기 알고리즘 BFS, DFS (with Python3)
Algorithm 2020. 4. 1. 21:07

DFS 와 BFS 에 대한 글은 아래 글을 참고한다. 2020/03/29 - [Algorithm] - 그래프 BFS, DFS 알고리즘 (with Python3) 그래프 BFS, DFS 알고리즘 (with Python3) 그래프 탐색 알고리즘에는 대표적으로 BFS 와 DFS 가 있다. 본 글에서는 아래 그래프를 가지고, BFS 와 DFS 의 탐색 알고리즘을 살펴본다. BFS 너비 우선 탐색을 BFS 라 부르고, Breadth Frist Search 의 약자이.. memostack.tistory.com 미로찾기 알고리즘 DFS, BFS 알고리즘을 이용해서 미로찾기 알고리즘을 구현할 수 있다. 문제 풀이의 핵심은 2가지이다. 미로 찾기 문제를 풀때는 미로를 모형화하여 그래프로 나타내는 것. 자료구조(Stack..

article thumbnail
탐색 알고리즘 BFS 응용하기 (친밀도 구하기)
Algorithm 2020. 4. 1. 20:05

BFS 에 대한 개념은 아래 글을 참고한다. 2020/03/29 - [Algorithm] - 그래프 BFS, DFS 알고리즘 (with Python3) 탐색 알고리즘 BFS 응용 모든 노드를 탐색(방문)하면서 노드(Node)간의 비용(Cost)을 같이 구한다. 문제 사람들간의 친밀도를 구한다. 사람: 노드(Node) 친밀도: 비용(Cost) 예를들어, 사람과 사람 사이의 친밀도를 1 이라 한다. A ~ M 까지 사람이 있을때, A를 기준으로 각각의 사람들과의 친밀도를 구한다. A 와 B는 친밀도가 1이다. B 와 D는 친밀도가 1이다. A와 D는 친밀도가 2이다. ... Coding - Python3 본 글에서는 파이썬을 이용하여 문제를 풀이한다. BFS 알고리즘으로 노드를 탐색하는것은 동일하다. 단, ..