Programming Language/Python 공부

[Python] 1205 List Comprehension(리스트 표현식) 및 문자열, 백준 2869번

hanseongjun 2021. 12. 6. 23:12
728x90
반응형
python 리스트 comprehension 표현식
  • arr = [i for i in range(10)]   ->   [0 1, 2, 3, 4, 5, 6, 7, 8, 9] 생성.
  • 이때 range대신 시퀀스 들어가도 가능.
  • 뒤에 if문 붙여서 [i for i in range(10) if i % 2 == 0] -> [0, 2, 4, 6, 8] 생성.
  • for문 여러 개 중첩 가능. 예) 2단 ~ 9단 리스트 만들 시 [i * j for i in range(2, 10) for j in range(1, 10)] 하면 i가 2부터 9까지 반복될 때 각각 j 가 1부터 9까지 반복됨. 인셉션처럼 갈수록 반복문이 깊어지는 것.
문자열 응용하기
  • .replace()
  • '문자열'. replace('원래 문자열', '나중 문자열') -> 원래 문자열에서 나중 문자열로 (부분 수정 가능) 바뀐 문자열 반환
  • 새롭게 바뀐 결과를 이용하려면 다시 변수에 저장 필요.
  • < 변수 이용 예시 >
  • .translate()
  • 문자열 안의 문자를 다른 문자로 치환. 
  • 1) table = str.maketrans('원래 문자', '새로운 문자')로 변환 테이블 생성
  • 2) translate(table)로 문자 바꿈
  • < translate 사용 예시 >
몰랐던 기능들
  • 이외에도 '문자열'.split()등을 통해 공백을 분리하거나
  • ' '. join('문자열 1', '문자열 2',...)을 통해 문자열 사이에 공백을 넣으며 문자열 연결 가능.
  • '문자열'.upper() -> 모두 대문자로 바꿈
  • '문자열'.lower() -> 모두 소문자로 바꿈
  • 공백 삭제 -> '문자열'.lstrip() -> 문자열 왼쪽에서 문자 삭제, rstrip() -> 오른쪽에서 삭제, strip() -> 양쪽에서 삭제
  • 이를 이용해 특정 문자 삭제도 가능.
  • < strip 함수 이용예시 >
백준 2869
 

2869번: 달팽이는 올라가고 싶다

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

www.acmicpc.net

  • # 달팽이가 나무를 올라가는 데 며칠이 걸리는지 구하는 프로그램.
    # A, B, V가 첫줄에 입력, 며칠이 걸리는지를 출력.
    
    # 입력부
    a, b, v = list(map(int, input().split()))
    
    # 연산부
    # ver.2 ** while로 무지성 반복 돌리니 v = 1억일때 시간이 너무 걸림.
    # 최적화가 필요하다고 생각해 공식으로 다시 작성하니 훨씬 빠름.
    v -= a
    day = v // (a-b)
    if v / (a-b) > v// (a-b):
        day += 1
    day += 1
    # 출력부
    print(day)
  • 처음에는 while로 단순 반복으로 처리하려 했으나, 1억 번 반복에서 시간이 좀 걸렸고, 반복문이 아닌 공식이 있을 거라 생각해 다시 생각해보니 나눗셈과 나머지를 이용해 처리할 수 있던 문제였다.
  • 더 알게 된 점:
  • math.ceil함수를 통해 올림을 할 수 있고, 이를 이용해 식을 더 간단히 할 수 있다.

 

728x90
반응형
LIST