자료구조 알고리즘

파이썬 알고리즘 작성시 기초 개념 (입력값 받기, 사칙연산, 내장함수)

Campkim 2021. 8. 9. 10:33

지난 금요일(8월/6일부터 '백준' 이라는 웹사이트에서 알고리즘 풀이를 시작했다.

다양한 문제를 언어를 선택하여 코드를 작성해서 제출하면 정오답을 체크해주는데,

 

처음에 시작하는경우 간단한 문제는 풀이법이 바로 떠오르더라도 컴퓨터에게 어떻게 일을 시켜야하는지 서툴러서 정답을 작성하는데 조금 시간이 걸린다. 나중에는 풀이법 자체가 바로 안떠오르는.....ㅜㅜ 

초보자들이 헷갈려하는 몇 가지 필수적인 개념에 대해 정리해보고자 한다. 앞으로 학습하며 추가예정.

 

1. 입력값 받기. 

입력값을 변수에 받을경우. 3가지 선택지가 있다.

1) a = input() 

2) a = raw_input()

3) a = sys.stdin.readline()    -> 이경우 import sys가 선행되어야함

 

입력속도 sys.stdin.readline() > raw_input() > input()

 

1-1. 다음은 여러가지 값을 받을때 입력방식.

" "로 구분되는 여러가지 숫자를 한번에 받는 경우, 여러가지 값을 여러번에 걸쳐서 입력 받는경우, 리스트로 받고 싶을 경우 등.

  • a=input()      →  'str' class로 받음
  • a=input().split()
    → 한가지 변수에 여러 값 입력하는경우, 기본적으로 'list' class로 받으나 list안의 요소는 'str' 로 받는다. 
  • a=map(int, input().split()) → 'map' class로 받음 
  • a,b=map(int, input().split()) → 'int' class로 받음
  • a,b=list(map(int, input().split()) → 'list' class로 받으나, 요소는 'int'로 받음
  • a = [x for x in input().split()] → '입력값을 순차적으로 받아서 list안에 추가하고 싶은 경우'
  • a = [int(x) for x in input().split()] → 위의 경우와 동일하나 'int'로 받는경우

2. 간단한 사칙연산 

* ** / // % += -= >= <=
제곱 나누기 나머지 값에 더하기 값에 빼기    

 

 

3. 내장 함수

  • round(A, N) A라는 숫자를 소수점 N번째 자리에서 끊어줌 (반올림)
  • format(A, '.3f') A라는 숫자를 소수점 3번째 자리까지 표현해줌 (반올림)      
    * 예를들어 40.000이렇게 표기 가능해짐 round를 쓸경우 0이 생략된다.
  • .upper() 문자열 모두 대문자로 바꿔줌
  • .find() 문자열에서 찾고자하는 문자의 index값 반환해줌
  • str[::-1] 문자열 배열을 역순으로 바꿔줌, 리스트도 가능 (유용)
  • min(A), max(A)  A라는 리스트 내부의 최솟값 최댓값 반환 

 

List 관련함수

  • list에 추가, 제거, 삭제
  • A.append() → A라는 list에 append 안의 요소를 추가해줌
  • ''.join(a) → list안의 요소들을 ''를 구분자로 문자열 형태로 합쳐줌 
  • .split() → 문자열을 나눠서 list화 해줌 ()안에 암것도 안넣으면 ' '기준으로 나눠줌
  • filter(조건, 리스트) → 리스트 안에 요소들을 특정 조건으로 걸러줌
    사용예시
    A=['A', '', 'B']
    A= list(filter(None, A))
    print(A) →  ['A', 'B']비어있는 None이라는 것을 걸렀음 / None 대신 조건을 포함한 함수도 가능
  • A.reverse() A라는 list의 배열을 역순으로 바꿔줌
    * A[::-1]도 가능