336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


- 기초

1) 입력,출력

2) 반복문,조건문

3) 구현

4주차는 위와 같이 진행하였으며, 튜티인 학생들이 참고하기 위한 용도로 포스팅을 진행한다. 


Python 2 vs Python 3 버전 차이점으로 출력문형식, int형, str형의 통일 등... 여러가지가 있지만 일단 이번주는 출력문의 형식만 알고가자!

1
2
3
4
5
hello = "hello World!"
# python 2
print hello
# python 3
print(hello)

cs



간단한 예로 괄호의 유무로 python 2와 python 3의 차이를 보여준다. 

꼭 python 으로 제출 시 python 2.x 버전이므로 괄호를 빼도록하고 

python3 으로 제출 시 python 3.x 버전이므로 괄호를 추가해줘야 한다. 


++ python 2 와 python 3 의 입력방식 차이


1
2
3
4
5
6
7
8
9
10
11
파이썬 2.x (제출언어 python) 에서는 
raw_input()
함수로 문자의 입력을 받게된다. 
raw_input() 으로 입력을 받게되면 string형으로 입력을 받게됩니다.
input() 으로 입력을 받게되면 int형 혹은 long 형으로 받게됩니다. 
 
파이썬 3.x (제출언어 python3)에서는 
raw_input()을 사용하지 않고 input() 을 사용하는데, 
python2 에서는 raw_input()
python3 에서는 input()
을 사용하자.
cs



1) 기본입출력

 2557 - Hello World

 

1
2
3
4
# python
print "Hello World!"
# python 3
print("Hello World!")
cs


위와 같이 작성을 하고 제출을 하면 된다. 문제에서 요구하는 출력이 """ Hello World! """ 이므로 

이것을 만족해야 맞았습니다! 를 받는다.


 1000 - A+B

이 문제에서는 입력으로 

A B

형식으로 받게 된다. 이때 A와 B사이에는 공백이 존재하므로 바로 받게되면 string형 문자형식으로 입력을 받게 된다. 

1
2
3
4
5
6
7
user_input = input()
# user_input 
# 1 2
# A = "1 2"
# 1 2
# <class 'str'>
# A 문자열 길이 3
cs


바로 입력을 받게되면 string형 문자형으로 입력을 받게 된다. 

이때는

1) 문자열을 자르고 

2) 형식변환(type-casting)을 해야한다. 

바로 입력을 받게되면 string형 문자형으로 입력을 받게 된다.

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
28
29
30
31
32
33
34
35
36
user_input = input()
 
user_input.split()
'''
# default ; 공백을 slice
# 다른 문자열 지정 시 해당 문자열을 기준으로 문자열을 자른다. 
# 문자열을 자른 후 해당 문자열을 나눈 값을 갖게 된다.
# user_input
# 1 2
# 을 입력하게 될 경우 
# 이전 설명과 같이 A = "1 2" 인 문자형식이 되며 
# split을 하여 문자열를 자르면(쪼개) 

# user_input = ['1', '2'] 로 쪼개지게 된다.

# 이후 리스트 형식을 갖게되며, 리스트는 차후 설명하기로 한다. 
# 간단하게 리스트 안에 변수를 사용하려면
# 첫번째 위치한 값
# user_input[0] = '1'
# 두번째 위치한 값
# user_input[1] = '2'
# 으로 되며, A[ x ] , x번째 index를 작성함으로 사용이 가능하다.
'''
 
# 다른 입력으로 1,2 를 입력하였을 경우 
'''
user_input = input() 
user_input.split(',') 
# 위와 같이 split 메소드안에 ',' 문자를 넣게되면
# 해당 문자 기준으로 자르게된다.
# user_input = ['1', '2'] 
'''
 
 
cs


그러면 문자열을 잘랐으니 각 리스트(List) 내 형식은 str형 문자형이므로 int형으로 형식변환(type-casting) 을 해줘야 한다.

A = int(user_input[0]) 

B = int(user_input[1])

형식 변환을 하는 것은 해당 변수값 앞에 타입을 기재하고 변수에 괄호를 넣어준다. 

type(variable)

형식(변수)

를 넣어주면 int형 integer 정수형 형식으로 바꿀 수 있다. 


그렇게 되면 이제 A+B를 할 수 있게 된 것이다. 

print(A+B)를 하게 되면 두 값을 더한 값이 출력이 된다. 

---

LIST

 위에 본 것과 같이 LIST 라는 자료형도 있습니다. 그렇다면 LIST는 어떻게 만들고, 접근해서 값을 사용할 수 있을까요?

1
2
3
4
# 리스트를 만드는 방법 2가지
L1 = list()
L2 = []
# 동일하게 리스트를 생성하는 것이다. 

cs

- 리스트를 만들 수 있습니다!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 이제 리스트 내부에 접근하여, 변수를 사용해보자!
L1 = [0,1,2,3]
# 이때 0을 출력하고 싶다면 
print L1[0]
# L1 리스트의 1번째 값에 접근하여 값을 출력하는 것입니다.
# 그렇다면 리스트의 4번째 값은 0, 1, 2, 3 L[3] 으로 접근해서 출력합니다!
print L1[3]
# 리스트의 순서는 0부터 시작합니다!
# 이제 리스트의 크기를 알아봅시다!
len(L1) # == 4
# len(variable) 함수는 리스트의 길이 혹은 여러 데이터의 길이를 나타냅니다.
# len(변수) ; len(length), 길이(변수) 를 뜻하며 
# len(L1) 은 총 4개의 변수가 들어있으므로 길이는 4가 됩니다!
# 문자열로 동일하게 구할 수 있는데요!
string = "Hello World!"
# 라고 작성하게되면 공백을 포함한 문자열의 길이가 12가 되죠!
len(string) 
# 위 값은 그럼 12가 됩니다!
cs

- 리스트의 길이 다른 형의 길이를 알 수 있습니다!


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
28
29
30
31
32
33
34
35
36
37
38
# 이제 리스트에 값을 추가해보면
# 처음에 LIST를 만들어 줍시다!
= []
# 그리고 값을 추가해볼 건데요 
# 1을 추가합니다!
L.append(1)
# 이렇게 하면 리스트의 순서에서 가장 뒤쪽 번째로 들어가게 됩니다!
print L
[1]
# 이제 10을 집어 넣으면
L.append(10)
print L
[110]
# 위와 같이 출력이 되죠!
# 그리고 5를 넣으면
L.append(5)
print L
[1105]
# 와 같이 가장 뒤쪽으로 리스트내 값이 들어가게 됩니다!
# 만약에 입력과 동시에 값을 추가한다면
= list()
'''
입력으로
4
3
2
0
이 주어진다면
'''
for step in range(0,4):
    L.append(input())
'''
으로 입력을 받을 수 있겠죠!
'''
print L
[4320]
# 위와 같은 출력을 얻을 수 있습니다!
 
cs

-리스트에 값을 추가할 수 있습니다! 


-리스트내를 정렬 하는 함수로 

1) sorted(list) 

2) list.sort()

를 사용할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
= raw_input().split()
print a
a.sort()
print a
= []
for i in a:
    b.append(int(i))
print b
b.sort()
print b
 
'''
input
1 2 38 29 1023 293 182 392 4 10 29 9 4 5
'''
 
'''
output
Success    time: 0.01 memory: 23352 signal:0
['1', '2', '38', '29', '1023', '293', '182', '392', '4', '10', '29', '9', '4', '5']
['1', '10', '1023', '182', '2', '29', '29', '293', '38', '392', '4', '4', '5', '9']
[1, 10, 1023, 182, 2, 29, 29, 293, 38, 392, 4, 4, 5, 9]
[1, 2, 4, 4, 5, 9, 10, 29, 29, 38, 182, 293, 392, 1023]
'''
cs


차이는 문자열을 정렬하였을 때의 경우 

정수형을 정렬하였을 경우의 차이를 보여줍니다.

END LIST

---

1
2
user_input = raw_input()
print int(user_input[0])+int(user_input[2])
cs


위 코드 와 같은 형식으로 입력을 받은 후 입력받은 문자열을 print에서 바로 int 형으로 바꿔 출력하거나


1
2
user_input = raw_input().split()
print int(user_input[0])+int(user_input[1])

cs



위 코드 와 같은 형식으로 입력을 받은 후 입력받은 문자열을 잘라서, 리스트의 첫번째, 두번째 값으로 쪼개진 입력을 형변환하여 print에서 바로 int 형으로 바꿔 출력.


1
2
3
4
user_input = raw_input().split()
= int(user_input[0])
= int(user_input[1])
print A+B

cs


위 코드 와 같은 형식으로 입력을 받은 후 입력받은 문자열을 잘라서, 리스트의 첫번째, 두번째 값으로 쪼개진 입력을 형변환을 int 형으로 바꿔 변수에 저장한 후 print에 변수를 입력하여 출력할 수 있습니다.


2558 - A+B - 2

이 경우에서는 

1
2
3
a=int(raw_input())
b=int(raw_input())
print a+b
cs


A+B - 2 에서는 입력이

1

2

즉,

A

B

로 주어지며, 위 와 같은 코드에서 raw_input()으로 한 줄의 입력을 문자열로 바꾸면서 int형으로 바로 바꿔 변수 a에 저장.

변수 b도 같은 형식으로 저장할 수 있습니다. 

혹은 input()를 받게 되면 int형으로 저장을 할 수 있으므로, 

1
2
3
a=input()
b=input()
print a+b

cs



와 같은 코드를 작성할 수 있습니다. 


10950 - A+B - 3

의 입력으로 

1
2
3
4
5
6
5 #test case 
1 2 # test #1
3 3 # test #2
4 4 # test #3
5 5 # test #4
9 9 # test #5
cs


의 입력이 주어질 수 있습니다. 이러한 입력을 받아 처리하기 위해서는 반복문을 사용합니다. for혹은 while문을 사용할 수 있습니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
= input()
for step in range(0,N):
# for loop 의 경우 range라는 함수를 사용하여 [0, N) 으로 0이상, N미만의 정수의 값을 차례대로
# for 문 내 선언된 변수인 step에 값을 입력하여 0,1,2,3....,N-1 까지 진행을 하게 됩니다. 
# range(시작, 끝+1, step의 증감량) 을 지정할 수 있습니다. 좀 더 자세한 것은 검색을 하여 확인
 
step = input()
while(step!=0):
    '''
        computation code
    '''
    step = step - 1
# while loop 의 경우 step의 수가 5라고 주어졌다면 처음 스텝을 진행하며 내부에 작성된 코드를
# 진행하고 난 후, step의 크기를 -1 하여 저장합니다.
# while(condition): while(조건문): 형식을 갖습니다.
# 조건문을 만족할 때 while loop를 진행하게 됩니다. 
# 그러므로 step이 0이 아니라면 while loop를 진행 할 수 있는 것이죠
# step 5 -> while loop -> step 4
# step 4 -> while loop -> step 3
# step 3 -> while loop -> step 2
# step 2 -> while loop -> step 1
# step 1 -> while loop -> step 0
# step 0 -> while(step != 0) step이 0 이므로 -> while loop out
# 위와 같이 총 5번의 while loop 내 연산을 할 수 있습니다!
cs



2) 반복문, 조건문  

- 10817 세수 

세 숫자를 받아서 그 중 중간 값을 찾아 출력하는 문제이다!

2 3 1 이 입력이 된 경우

2 를 출력하는 문제인 것이다. 

이때는 정렬된 값이 들어오면 중간 값을 바로 출력하면 되지만!

그렇지 않은 경우의 입력은 

1) 정렬을 해주던지?

2) 최대 최소를 제외한 숫자를 출력하던지?

3).....

여러가지가 방법이 있겠지만 지금 두가지 방법밖에 떠오르지 않는다.


python의 list는 정렬을 해주는 함수를 가지고 있다. 

hint .sort()를 하게 되면 정렬을 하게 된다.


조건문

python에서는 따로 switch 문이 없고, if-elif-else 문이 조건문으로 있다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 형태 1
if condition:
 
# 형태 2
if condition1:
elif confition2:
 
# 형태 3
if condition1:
else:
 
# 형태 4
if condition1:
elif confition2:
else:

cs


 1) if 문 만을 쓰는 경우

: 조건문1이 하나이며 이외에 조건문1 외에 다른 조건을 처리 하지 않음!

 조건문[1] 만 처리가 가능하며 나머지는 처리가 불가능 합니다.


 2) if-elif 문 포함하여 쓰는경우

: 조건문1,2......,n 외 if(1개) - elif (n-1)개 사용하는 경우 총 n개의 조건문을 처리하겠다!

 조건문[1,n] 외에 처리가 불가능합니다.


 3) if-else 문 포함하여 쓰는경우

: 조건문1 그리고 그에 포함되지 않는 경우(조건문1 외에) 

 즉, 모든 경우가 처리가 가능합니다.


 4) if-elif-else 문을 모두 쓰는 경우 

: 조건문1,2....,n 과 모든 조건문[1,n]에 포함되지 않는 경우를 보겠다. 

 이또한 모든 경우가 처리 가능합니다.


위 형태의 조건문들을 가질 수 있으며, 예외처리를 if-elif-else 문으로 할 수 있겠죠?

+ 추가로 try-except 문이 있는데 나중에 설명하도록 할게요!


그렇다면 조건인 condition으로 무엇이 들어가는가?

기본적인 비교구문을 살펴보면 

A B

두 수를 비교한다고 합시다!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
'''
A B
condition으로 
A < B : B가 A보다 크다면 
A <= B : B가 A보다 크거나 같다면
A > B : A가 B보다 크다면
A >= B : A가 B보다 크거나 같다면
A != B : A와 B가 다르면
A == B : A와 B가 같다면
'''
 
if(condition):
cs

위와 같이 6개의 비교연산을 기본으로 할 수 있습니다. 


그렇다면 condition안에 여러가지 비교구문을 넣고 싶다면?

이제 수가 

A B C

가 있을 때 비교를 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'''
논리 연산자 and or not
A B C
condition으로 
A < B and B < C : 수의 크기가 오름차순으로 A B C 로 되어 있다면 True!
A == B and B == C : A,B,C 모두 동일한 값을 가질 경우 True!
A == B or B == C or A == C : 총 3개 중 2개만 같다면 True!
1) A != B : A와 B가 같지 않다면
2) not (A==B) : 이경우가 아니라면(A와 B가 같다면)
1)과 2)는 같은 것입니다. 
'''
 
if(condition):
cs

and , or , not 논리연산자를 사용할 수 있습니다. 

다른 연산자 들도 많으니 python doc을 참고하거나,

https://docs.python.org/2/library/index.html

https://wikidocs.net/1165

를 참고해주세요! 

그리고 연산자의 우선순위가 존재하는데 괄호를 정확히 기입하면 무조건 괄호가 우선이므로...

기억이 나지 않는 경우 순서대로 괄호를 해줍시다.



---

10952- A+B - 5

해당 문제는 무한루프를 설정하고 입력을 받으며, 

0 0 이 입력으로 들어오게 되면 loop를 탈출하게 하면 됩니다! (loop 탈출 : break)








 


+ Recent posts