[코딩테스트] 파이썬 기초 문법

https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8/

난이도가 어려운 문제를 풀기에는 자료구조와 알고리즘 강의를 들어야 할 것 같아 위의 인프런 강의를 신청하였다.

앞에 기본적인 파이썬 문법은 기본적으로 이해하고 있기에 패스하고 현재 내용부터 수강하였다. 블로그에는 내가 공부하면서 헷갈렸거나 새롭게 알게된 내용을 위주로 적을 예정이다.

문자열과 내장함수

find() 함수 와 count() 함수

msg = "It is Time"
tmp = msg.upper()
print(tmp)
print(tmp.find('T'))
print(tmp.count('T'))

find() 함수는 ()안에 있는 문자열이 존재하면 첫 인덱스값 반환 없으면 -1을 반환한다.
count() 함수는 ()안에 있는 문자의 개수를 반환한다.

알파벳 문자열에서 공백을 없애고 싶을 때

for x in msg :
   if x.isalpha() :
      print(x)

문자열의 알파벳 아스키코드 출력 ord() 함수 이용

tmp = 'AZ'
for x in tmp:
   print(ord(x)

알파벳 아스키코드 -> 문자 chr() 함수 이용

리스트와 내장함수

리스트 + 리스트 -> 리스트 합치기
insert(a,b) -> 인덱스 a에 b 삽입
pop() -> 맨뒤에 값 삭제 , pop(3) -> 3번째 인덱스 값 삭제
remove(a) -> a값을 삭제
index(5) -> 리스트에서 5의값을 찾아 리스트에서 삭제

import random as r
r.shuffle(a) -> 리스트를 랜덤으로 셔플
a.sort() -> 오름차순으로 소팅
a.sort(reverse=True) -> 내림차순으로 소팅
a.clear() -> 리스트 값 전부 삭제

a = [23,12,36,53,19]
for x in enumerate(a) :
    print(x)

(인덱스,값)의 튜플 형태로 출력 가능

튜플은 리스트랑 비슷하지만 값 변경 불가능

a = [23,12,36,53,19]
for x in enumerate(a) :
    print(x[0] , x[1]) 

튜플 값을 0,23 1,12 처럼 따로 출력가능

a = [23,12,36,53,19]
for index, value in enumerate(a) :
    print(index, value) 

따라서 코딩테스트에는 위와 같은 식을 주로 사용

if all(60 > x for x in a) :
    print("YES")
else:
    print("NO")

A에 있는 리스트 모두 60보다 작아야 참

if any(15 > x for x in a) :
    print("YES")
else:
    print("NO")

A에 있는 리스트중 하나만 15보다 작으면 참

2차원 리스트 생성과 접근

a = [[0] * 3 for _ in range(3)]

for _ 는 값을 할당하지 않고 반복문만 돌아감
[[0,0,0],[0,0,0],[0,0,0]] 의 값이 출력됨

for x in a :
  for y in x :
     print(y, end=' ')
  print()

를 통해 2차원 리스트 출력 가능

함수와 람다함수

def add(a : int, b : int) -> int :
    return a + b

가독성이 좋은 코드를 만들기 위하여 함수 사용

plus_two = lambda x : x +2
print(plus_two(1)) 

람다 함수는 표현식 내장함수의 인자로 사용할때 매우 편리함

def plus_one(x) :
return x + 1

a = [1,2,3]
print(list(map(plus_one,a))) => [2,3,4]
map(int,a) a 의 자료형을 int화

이를 람다함수를 이용하면 한줄로 표현 가능
print(list(map(lambda x : x+1, a)))
a의 값들은 x에 대응 시켜 x + 1 시킴

※ 코딩테스트 TIP

소팅할 때 key값을 어떤 기준으로 하여 정렬할지? 고민이라면
람다함수를 통해 쉽게 계산 가능

for - else 구문
정상적으로 반복문이 종료됐을 때 (break문에 걸리지 않음)
표현해야 할 값이 있을 때 사용

좋은 웹페이지 즐겨찾기