반응형

 

 

** 시작 인덱스는 포함하고 !  끝 인덱스는 포함하지 않는다 !

slicing

  • 리스트나 문자열에서 값을 여러개 가져오는 기능
text = "hello world"
text = text[ 1:5 ]

list = [ 0, 1, 2, 3, 4, 5 ]
list = list[ 1:3 ]
  • slice를 하면 해당하는 부분의 리스트나 문자열을 새로 만들어 준다.

  • 시작과 끝부분을 얻어 오는 방법

    • list[ 2: ] : 인덱스 2번째부터 끝까지 반환
    • list[ : 2 ] : 처음부터 인덱스 2번째 전까지 반환
    • list[ : ] : 처음부터 끝까지 전부 반환
    •  
text = "hello world"
text[1:5]         # ello          1번째부터 5번째 전까지
text[3:]          # lo world      3번째부터 끝까지
text[:3]          # hel           처음부터 3번째까지
text[:]           # hello world   처음부터 끝까지

 

 

 

 

Slice의 step

step

  • slice한 값의 범위에서 step 값을 주어 그 값만큼 건너뛰어 가져오는 기능
  • list[ 시작값:끝값:step ]

 

 

Slice로 리스트 수정하기

slice 활용

  • 삭제
    • del list[ :5 ] : 처음부터 5번째까지 삭제
  • 수정
    • list[ 1:3 ] = [ 77, 88 ]
    • list[ 1:3 ] = [ 77, 88 ,99 ] : 더 많은 개수로 변환
    • list[ 1:4 ] = [ 8 ] : 더 적은 개수로 변환

 

 

 

반응형
반응형

 

 

 

 

 

www.acmicpc.net/problem/10757

 

10757번: 큰 수 A+B

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

 

코드

a, b = map(int, input().split())
print(a+b)

 

 

파이썬에서 다룰 수 있는 제일 큰 수는 몇일까?

파이썬은 10,000자리 자연수도 자유롭게 다룰 수 있다고 한다!!

 

 

 

 

 

파이썬 정수 최대값은 몇일까? 정최몇?

파이썬 2

import sys

t1 = sys.maxint
t2 = sys.maxint+1 #int범위를 넘으면 long으로 자동으로 형 변환

print(t1)
print(t2)
print(type(t1))
print(type(t2))
9223372036854775807
9223372036854775808
<type 'int'>
<type 'long'>

 

 

 

파이썬 3

import sys

t1 = sys.maxsize
t2 = sys.maxsize+1 #이것도 type int

print(t1)
print(t2)
print(type(t1))
print(type(t2))
9223372036854775807
9223372036854775808
<class 'int'>
<class 'int'>

 

 

파이썬3부터는 maxsize 넘어가도 int형으로 인식한다.

 

 

 

 

 

반응형
반응형

 

 

www.acmicpc.net/problem/3009

 

첫 번째 방법

a, b = input().split()
arrA_.append(a)
arrB_.append(b)
arrA_ = []
arrB_ = []

for i in range(3):
    a, b = input().split()
    arrA_.append(a)
    arrB_.append(b)

for i in range(3):
    if arrA_.count(arrA_[i]) == 1:
        ansA = arrA_[i]
    if arrB_.count(arrB_[i]) == 1:
        ansB = arrB_[i]

print(ansA, ansB)

 

 

두 번째 방법

a, b = map(int, input().split())
arrA_.append(a)
arrB_.append(b)
arrA_ = []
arrB_ = []

for i in range(3):
    a, b = map(int, input().split())
    arrA_.append(a)
    arrB_.append(b)

for i in range(3):
    if arrA_.count(arrA_[i]) == 1:
        ansA = arrA_[i]
    if arrB_.count(arrB_[i]) == 1:
        ansB = arrB_[i]

print(ansA, ansB)

 

 

 

결과

 

위에 두 번이 각각 첫 번째와 두 번째 방법을 사용해서 풀이한 것입니다. 아무런 차이가 없네요!

map은 뭘까요?

 

 

 

반응형
반응형

 

 

 

list = ['가', '나', 다']

1. count()

list.count('가') 

하면 list 안에 '가'가 몇 개 들어있는지를 세어준다. 따라서 1

 

2. len()

len(list)

하면 list 내의 값이 몇 개 들어있는지 세어준다. 따라서 3

 

 

 

반응형
반응형

 

 

www.acmicpc.net/problem/11653

 

11653번: 소인수분해

첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.

www.acmicpc.net

 

파이썬 코드

n = int(input())

idx = 2
while n != 1:
    if n % idx == 0:
        print(idx)
        n = n / idx
    else:
        idx += 1

 

C++ 코드

#include <stdio.h>

int main(void){
int n;
    scanf("%d", &n);

int idx = 2;
while(n != 1){
    if(n % idx == 0){
        printf("%d\n", idx);
        n /= idx;
    } else {
        idx += 1;
    }
}
}

 

 

결과

 

 

 

같은 로직으로 파이썬으로도 풀어보고, C++로도 풀어 보았는데 C++로 했을 때 시간이랑 메모리가 후어어ㅓ어어ㅓ얼씬 적게 드네요

왜 그럴까요?

 

 

 

 

반응형
반응형

 

 

 

List의 다양한 기능

  • list.index( value ) : 값을 이용하여 위치를 찾는 기능
  • list.extend( [value1, value2] ) : 리스트 뒤에 값을 추가
  • list.insert( index, value ) : 원하는 위치에 값을 추가
  • list.sort( ) : 값을 순서대로 정렬
  • list.reverse( ) : 값을 역순으로 정렬

 

def safe_index(my_list, value):
    # 함수를 완성하세요
    if value in my_list:
        return my_list.index(value)
	else:
        return None

print(safe_index([1,2,3,4,5], 5))
print(safe_index([1,2,3], 5))

 

list1 = [1, 2, 3, 4]

# 아래줄에서 list1의 1번째 자리에 8을 넣고 원래 있던 값은 오른쪽으로 밀어 보세요.
list1.insert(0, 8)

print("첫 번째 자리에 8을 넣은 결과 : {}".format(list1))

# 아래줄에서 list1을 작은 수부터 큰 수로 정렬해 보세요
list1.sort()

print("list1을 작은 수부터 큰 수로 정렬한 결과 : {}".format(list1))


# 아래줄에서 list1을 거꾸로 만들어 보세요
list1.reverse()

print("list1을 거꾸로 정렬한 결과 : {}".format(list1))

 

 

 

 

List와 문자열

List와 String

  • 리스트와 문자열은 유사하다.
  • 서로 변환이 가능하다.
  • list = str.split( ) : 문자열에서 리스트로
  • " ".join( list ) : 리스트에서 문자열으로 -> 문자들 사이에 공백을 넣어준다.

 

str = "오늘은 날씨가 흐림"

# split()을 이용해서 str을 공백으로 나눈 문자열을 words에 저장하세요
words = 
str.split(" ")


# index()를 이용해서 "흐림"이 words의 몇번째에 있는지 찾고, 
# position에 저장하세요.
position = 
words.index("흐림")


words[position] = "맑음"

# join()을 이용해서 words를 다시 문자열로 바꿔 new_str에 저장하세요. 
# words를 문자열로 바꿀때는 공백 한 칸을 기준으로 붙이면 됩니다.
new_str = 
" ".join(words)


print(new_str)

 

 

 

 

 

 

 

 

 

 

 

반응형

+ Recent posts