알고리즘2022. 2. 27. 22:01
728x90

* 정렬은 출제 빈도높고, 평균 점수높다고 한다. (출처 : 프로그래머스)

 

--------------------------------------------------------------------------------------------------------------

 

[ 문제 ]

https://programmers.co.kr/learn/courses/30/lessons/42748

 

코딩테스트 연습 - K번째수

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

programmers.co.kr

 

[ 코드 ]

def solution(array, commands):
    answer = []
    # com을 읽어온다. ex.[2, 5, 3]
    for com in commands:
        a, b, c = com
        ''' (위와 같은 코드)
        a = com[0]   ex. 2
        b = com[1]   ex. 5
        c = com[2]   ex. 3
        '''
        
        # 리스트 슬라이싱을 [시작:끝] 이렇게 했다면 시작~끝-1까지 담김
        arr = array[a-1:b] #2~5번째임. 인덱스에서는 1~4.
        sort_arr = sorted(arr) # 정렬
        
        # answer리스트에 추가해줌
        answer.append(sort_arr[c-1])
        
        #(참고) 이런 식으로 바로 쓰기도 가능!
        #answer.append(sorted(arr)[c-1])
    return answer

 

 

[ 참고자료 ]

파이썬 리스트 슬라이싱, append 가 헷갈린다면 아래 글이 도움될 것!

https://mminky.tistory.com/121

 

[ Python ] 리스트 추가, 삭제, 슬라이싱

* 리스트 추가 .append() * 리스트 원소 삭제 .pop .remove del * 리스트 슬라이싱 1) 이용방법 이렇게 이용하면 (시작)~(끝-1)까지의 항목들이 담긴다. 리스트명[시작:끝] 이런 리스트가 있다고 가정해보자

mminky.tistory.com

 

반응형
Posted by mminky

댓글을 달아 주세요

파이썬2021. 4. 12. 15:09
728x90

* 리스트 추가

.append()

 

* 리스트 원소 삭제

.pop

.remove

del

 

 

* 리스트 슬라이싱

 

1) 이용방법

 

이렇게 이용하면 (시작)~(끝-1)까지의 항목들이 담긴다.

리스트명[시작:]

 

이런 리스트가 있다고 가정해보자.

n_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

n_list=[]
for i in range(15):
    n_list.append(i)

print(n_list)

 

* 0에서 4까지 분할

[0, 1, 2, 3, 4]

s_list1=n_list[0:5]
print(s_list1)

 

 

2) 간격

 

리스트명[시작::간격]

 

* 간격2로 분할

[2, 4, 6, 8, 10]

#간격 (2부터 11까지 2 간격)
s_list4=n_list[2:11:2]
print(s_list4)

 

 

3) 역순

 

리스트명[시작::-1]

 

* 역순 출력

[10, 9, 8, 7, 6]

#역순출력 (10부터 6까지 역순으로)
s_list5=n_list[10:5:-1]
print(s_list5)

 

* 역순, 간격 2

[10, 8, 6, 4, 2]

#10부터 2까지 역순, 간격2
s_list6=n_list[10:1:-2]
print(s_list6)

 

 

반응형
Posted by mminky

댓글을 달아 주세요

파이썬2020. 2. 4. 16:41
728x90

파이썬의 기본 자료형은 int, string, float입니다.

그 중 string 즉, 문자열과 관련된 명령어에 대해 알아보겠습니다.

 

파이썬은 문자를 선언할 때, int a이런식으로 하지 않아도 돼서 좋더라구요!

mystring = 'hello world'라고 입력하면 자동으로 mystring의 타입은 string으로 지정됩니다.

 

1) len()

  : 문자열의 길이 구하기

위와 같이 입력하면 결과창에 11이 나타나는 것을 알 수 있습니다.

공백을 포함해서 h,e,l,l,o, ,w,o,r,l,d 총 11자가 맞죠?

 

2) .split()

  : 문자열 나누기

split함수는 괄호 안에있는 문자를 기준으로 문자열을 나눕니다.

그리고 리스트로 반환하기 때문에 [0], [1], [2] 등 인덱스를 이용할 수 있습니다.

('리스트'는 나중에 배울 것이기 때문에 그냥 그렇구나~하고 넘어가시면 됩니다!)

 

공백을 기준으로 문자열을 나누려면 split(' ')을 이용하면 됩니다.

hello world를 공백을 기준으로 나누면 hello와 world겠죠?

따라서 출력을 해보면 다음과 같습니다.

 

3) +

  : 문자열 병합

파이썬에서는 간단히 '+' 기호로 문자열을 병합할 수 있습니다.

이렇게 a + 공백 + b를 하면 hello world가 출력되는 것을 알 수 있습니다.

 

4) join()

  : 리스트의 문자열 병합

괄호 내의 문자를 넣어서 리스트의 모든 문자열을 병합합니다.

mylist라는 리스트에 First, Second, Third가 있습니다.

순서대로 "공백", "<>", "/"를 기준으로 병합했습니다.

join 결과창

위와 같이 문자열 사이에 지정한 문자(공백, <>, /)가 들어간 것을 확인 할 수 있습니다.

 

5) 문자열[ 시작 : 끝 ]

  : 슬라이싱 연산자

문자열 index

문자열의 인덱스를 위와 같이 생각하면 이해하기 쉬울 것입니다.

 

예를 들어 mystr[1]을 하면 1이 시작되는 위치인 e가 나오는 것을 알 수 있습니다.

 

여러 문자를 출력하고 싶다면 mystr[1:4]와 같이 범위를 지정해주면 됩니다.

1부터 4까지

1부터 4까지 하면 e,l,l이 선택됩니다. 따라서 결과창에는 ell이 나오게 되겠죠?

만약 4번부터 끝까지 출력하고 싶다면 mystr[4:]를,

처음부터 4번까지 출력하고 싶다면 mystr[:4]를 하면 됩니다.

이때,  : index 0으로 생각하면 이해하기 쉬울 것입니다.

mystr[:4]는 0~4로 생각하면 쉽습니다.

따라서 결과는 hell이 되겠죠?

 

mystr[4:]는 4~끝 으로 생각하면 쉽습니다.

따라서 o world가 출력됩니다.

실제 결과창은 다음과 같습니다.

 

오른쪽부터 읽어오고 싶다면 음수 인덱스를 이용하면 됩니다.

예를 들어 mystr[-3]을 해보겠습니다.

따라서 r이 출력됩니다.

 

음수 인덱스 역시 mystr[-2:], mystr[:-2] 이렇게 이용 가능합니다.

mystr[-2:]는 -2 ~ 0을 의미합니다.

따라서 ld가 출력됩니다.

 

mystr[:-2]는 0 ~ -2를 의미합니다.

따라서 hello wor가 출력됩니다.

 

------------------------------------------------------------------------------------------------------------------------------

 

아래 사이트에 연습문제와 설명이 잘 나와있으니 참고하시는 것도 좋을 듯 합니다!

다들 파이팅!!

https://wikidocs.net/2843

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

문의사항이나 수정사항 있으면 댓글 부탁드립니다:)

반응형
Posted by mminky

댓글을 달아 주세요