How We Coding

동영상 강의 : http://pythonkim.tistory.com/notice/77


IDE : PyCharm


# Day_01_01_Basic.py


1
print('Hello python!')

cs


- 위 한줄을 실행(구동). Run 메뉴 - Run... // 단축키 art+shit+F10

- ... 은 바로 실행되지 않고, 별도의 창이 뜬다는 뜻. 

- 파이참은 파일 기반으로 원하는 파일을 선택하여 실행

- 실행한 파일을 다시 실행할 땐, shift+F10



# 문제

# Hello, python! 을 3회 출력하는 코드를 3가지 만들어보기


1
2
3
4
5
6
7
8
9
print('Hello python!Hello python!Hello python!')
 
print('Hello python!'*3)
 
print('Hello python!')
print('Hello python!')
print('Hello python!')
 
print("Hello python!" "Hello python!" "Hello python!")
cs


- 이런 방법들이 있다.

- 마지막의 경우처럼 큰 따옴표를 여러개 늘어놓는 방법도 있다. (작은 따옴표로도 가능하다.)

- 파이썬에서 문자열을 '...' 와 "..."가 완벽하게 동일하다고 한다.


- 마지막의 경우는 하나를 여러개로 나누고 싶을 때 사용한다.


1
2
3
print("Hello python!" \
      "Hello python!" \
      "Hello python!")
cs


- 백슬래쉬( \ ) 로 윗줄과 아랫줄을 연결을 한다.

- 눈에 보이는 그대로 나열을 할 수 있게 된다. (중요..!!)


- 데이터와 데이터를 쉼표로 분리하기.


1
2
print("Hello python!" "Hello python!" "Hello python!")
# Hello python!Hello python!Hello python!
cs


>> 다른 언어를 사용해봤다면 생각해야 한다고 하신다. 반성합니다....


- 모든 프로그래밍 언어는 출력하는 함수는 한번에 여러개를 전달하는 옵션을 제공한다.

  ( 가변인자 )


- print 함수( print() ) 는 따옴표로 묶어 놓은 것을을 화면에 출력한다.



# 프로그래밍 : 프로그램을 만드는 과정

# 프로그램의 구성 요소 : 코드, 데이터

# 데이터 : 변수(변하는 데이터), 상수(변하지 않는 데이터)

# 데이터 : 숫자(실수 float, 정수 integer), 문자(문자열, string), 논리값(boolean)



- 여러가지 형태의 데이터 출력해보기.

1
2
print(3.1456"string", True)
print(type(3.14), type(56), type("string"), type(True))
cs


- 실행결과

3.14 56 string True

<class 'float'> <class 'int'> <class 'str'> <class 'bool'>


# 파이썬에서는 실제로 데이터 타입(자료형)은 존재하지 않는다. 하지만 내부적으로는 구분을 한다.

# 3.14 는 내부적으로 float 이라는 이름을 사용한다.

# 내가 만들지 않은 데이터를 확인할 때 type() 을 사용한다. 

# 여기서 56은 56으로만 사용 가능하다. 그래서 상수라고 한다.



- 변수 만들기

1
2
= 3.14
print(3.14, a)
cs


- 실행결과

3.14 3.14


# = 는 대입연산자(assignment), 오른쪽에 있는 값을 왼쪽에 있는 변수에 넣겠다.

# 여기서 a 는 변수.


1
2
3
4
5
= 3.14
print(3.14, a, type(a))
 
= 56
print(a, type(a))
cs


- 실행결과

3.14 3.14 <class 'float'>

56 <class 'int'>


# 상수는 읽기만 하는 변수.

# 변수는 읽기도 하고 , 쓰기도 할 수 있는 변수.

# 상수가 하는 일은 변수가 다 할 수 있지만, 변수가 하는 일은 상수가 다 하지 못한다.


- newline '\n'

1
print('Hell\no python!')    # newline, 개행문자
cs


- 작은따옴표와 큰따옴표를 쓰고싶을 때.

1
2
print('"Hello"')    # "Hello"
print("'Hello'")    # 'Hello'
cs


- 줄 긋기...

1
print('-'*50)       # --------------------------------------------------
cs



- 참고로 주석('#')의 단축키는 command+'/' (Win 에서는 Ctrl + / )

>> 블럭지정 후 한번에 주석처리 가능하다.


- swap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
= 7
= 19
print(a, b)     # 7, 19
 
# 문제
# 아래쪽 코드에서 거꾸로 출력하도록 코드 추가하기
# a와 b를 서로 교환한다.
 
# a = 19
# b = 7     # 위에서 값을 변경하면 이 코드는 의미가 없어진다.
 
 
# 콜라와 주스가 담긴 컵이 있다. 내용물을 바꾸고 싶다. 어떻게?
tmp = a        # 빈컵이 필요..!!
= b
= tmp
 
print(a, b)
cs


>> 전에 튜터링을 하면서 지우개 두 개로 설명을 해줬는데, 그때는 공중부양을 시켜 바꿨던 튜티가 

     생각이 난다. 앞으로 콜라와 주스를 통해 설명해줘야겠다.



- 다중치환

1
2
a, b = b, a
print(a, b)
cs


>> 하지만 python 에서 위와 같은 방법은 멍청한 짓이다.

>> 대입 연산자를 통해 값을 여러개 전달 가능하다. 

>> 성능은 위보다는 조금 느리다고 한다.


- 위에서 두 개의 변수를 만들어 초기화 하는 방법은 아래와 같이 할 수 있다.

1
2
3
# a = 7
# b = 19
a, b = 719
cs



- 한 줄에 여러줄을 표현하고 싶을 땐 ';'으로 구분할 수는 있다.

1
= 7; b = 19

c



>> 권장하는 문법은 아니다. 파이썬에서는 ';'를 잘 사용하지 않는다.


'Language > Python' 카테고리의 다른 글

<1-7> 정규표현식 with Python  (0) 2018.02.03
<1-6> 정규표현식 (Regular Expression)  (0) 2018.02.02
<1-5> 함수(function)  (0) 2018.02.01
<1-4> 제어문(if)  (0) 2018.01.31
<1-3> 연산자  (0) 2018.01.30

[1463] 1로 만들기

BOJ/DP2018. 1. 26. 11:24

http://boj.kr/1463


DP1 - basic


- go(n) : 3개의 연산을 적절히 사용했을 때, n을 1로 만드는 회수의 최소값.


< 소스코드 - top down >


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#define INF 0x3f3f3f3f
 
int d[1000001];
 
int go(int n)
{
    int a, b, c, ans;
    a = b = c = INF;
    if(n == 1return 0;
    if(d[n]) return d[n];
 
    if(n%3 == 0) a = go(n/3)+1;
    if(n%2 == 0) b = go(n/2)+1;
    c = go(n-1)+1;
    ans = a < b ? a : b;
    ans = ans < c ? ans : c;
    return d[n] = ans;
}
 
int main()
{
    int n;
    scanf("%d"&n);
    printf("%d\n", go(n));
    return 0;
}
cs


< 소스코드 - bottom up >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int main()
{
    int i, n, d[1000001];
    scanf("%d"&n);
    
    d[1= 0;
 
    for(i=2; i<=n; i++) {
        d[i] = d[i-1+ 1;
        if(i%2 == 0 && d[i] > d[i/2]+1)
            d[i] = d[i/2]+1;
        if(i%3 == 0 && d[i] > d[i/3]+1)
            d[i] = d[i/3]+1;
    }
    
    printf("%d\n", d[n]);
    return 0;
}
 
 
cs


-

'BOJ > DP' 카테고리의 다른 글

[2302] 극장 좌석  (0) 2018.02.05
[1937] 욕심쟁이 판다  (0) 2018.02.01
[1309] 동물원  (0) 2018.02.01
[1932] 숫자삼각형  (0) 2018.02.01
[1149] RGB 거리  (0) 2018.01.30

-mysql module 정의하기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
import * as mysql from 'mysql';
 
/** MySQL DB 연결 */
export module mysqlUtil {
    export const pool = mysql.createPool({
        host     : 'host',
        user     : 'user',
        password : 'password',
        database : 'database',
        timezone : 'UTC',
        connectionLimit : 50,
        waitForConnections : true
    });
}
cs


>> 다수의 Connection 관리 기법인 Connection Pool 방식을 사용하였다.

     Pool 에서 Connection을 사용하고, Pool 에 반납. 

     (https://nesoy.github.io/articles/2017-04/Nodejs-MySQL)

     

    DB Connection Pool 에 대한 이야기는 아래 URL 참고.

     https://www.holaxprogramming.com/2013/01/10/devops-how-to-manage-dbcp/


>> mysql.createPool(option); 

>> connectionLimit : 최대 커넥션 갯수

>> waitForConnections : pool 에 여유 커넷션이 없는 경우 대기 여부 설정



'H6 > backend (Node.js, tsc)' 카테고리의 다른 글

<7> REST API & CRUD  (0) 2018.01.31
<6> tsconfig.json 을 통한 컴파일 옵션 설정  (0) 2018.01.31
<4> MySQL & node-mysql  (0) 2018.01.22
<3> 에러처리..  (0) 2018.01.22
<2> app.ts 및 server.ts 만들기  (0) 2018.01.22