20240103 백준 4344, 2869, 2609

반올림

  • 소수점 n번째까지 반올림해서 나타내고 싶을 때
    round(반올림하고 싶은 수, n)

올림

  • 소수점 n번째까지 올림해서 나타내고 싶을 때
    import math
    math.ceil(올림하고 싶은 수 * (10 ** n)) / (10 ** n)

버림

  • 소수점 n번째까지 버림해서 나타내고 싶을 때
    import math
    math.floor(버림하고 싶은 수 * (10 ** n)) / (10 ** n)

출력 형식(printf)

파이썬에는 printf가 없다.
대신 포맷팅을 사용하면 됨. 포맷팅에는 두가지 방법이 있음.

  • 포맷 코드 사용
    • 포맷 코드
      • %s : 문자열
      • %d : 정수
      • %c : 문자 1개
      • %f : 부동 소수
      • %o : 8진수
      • %x : 16진수
      • %% : ‘%’ 자체를 출력

    • 사용법
      print(“문자열 %d %s 문자열” % (1번째 포맷코드에 들어갈거, 2번째 포맷코드에 들어갈거))

      Tip!
      %s에는 어떤 자료 형태든 넣을 수 있음.

      [공백을 넣고 싶을 때]
      포맷 코드의 %와 s,d,c등의 사이에 숫자를 넣으면 그 숫자만큼 공백을 출력해줌.
      ex. 출력하고 싶은 값의 왼쪽에 공백을 10칸 넣고 싶으면 : %10s
      ex. 출력하고 싶은 값의 오른쪽에 공백을 10칸 넣고 싶으면 : %-10s

      [소수점 n자리까지 출력하고 싶을 때]
      ‘0.’ 뒤에 몇째짜리까지 출력하고 싶은지 그 값을 적으면 됨.
      이때 반올림 적용됨.
      ex. 3.141592를 소수점 셋째짜리까지 출력하고 싶으면 : print(“%0.3f” % 3.141592) #결과값 : 3.142

  • 포맷 함수 사용
    문자열 내에서는 {}로 적어두고 문자열 끝에 .format({}자리에 들어갈 값)을 적어줌.
    • 사용법1
      print(“문자열 {0} 문자열 {1} 문자열 {2} 문자열” .format(0번째에 들어갈 값, 1번째에 들어갈 값, 2번째에 들어갈 값))
    • 사용법2
      print(“문자열 {var1} 문자열 {var2} 문자열 {var3} 문자열” .format(var1=var1에 들어갈 값, var2=var2에 들어갈 값, var3=var3에 들어갈 값))

      [공백을 넣고 싶을 때 => 전체 자리수를 지정하고 싶을 때]
      원래는 그냥 {인덱스}였다면, {인덱스:n} 이렇게 :n을 추가하여 n에 출력하고 싶은 값의 전체 자리수를 넣어 줌.
      전체 자리수를 지정하는 것이기 때문에 자리수(n)가 똑같으면 출력하고 싶은 값의 길이가 달라져도 출력문의 길이가 왔다갔다하지 않는다.
      ex. 출력하고 싶은 값에 10칸을 지정해주고 싶으면 : print(“문자열 {0:10} 문자열” .format(0번째에 들어갈 값))

      [전체 자리수를 지정하고 그 안에서 왼쪽/오른쪽 정렬하고 싶을 때]
      {인덱스:n}에서 :와 n사이에 정렬방향을 나타내는 ‘<’ or ‘>’를 적어주면 됨.
      <는 지정된 칸에서 왼쪽으로 정렬해줌. >는 지정된 칸에서 오른쪽으로 정렬해줌.
      ex. 10칸 지정하고 왼쪽으로 정렬해 출력하고 싶으면 : print(“문자열 {0:<10} 문자열” .format(0번째에 들어갈 값))
      ex. 10칸 지정하고 오른쪽으로 정렬해 출력하고 싶으면 : print(“문자열 {0:>10} 문자열” .format(0번째에 들어갈 값))

      [전체 자리수 지정하고 공백에 특정 문자를 넣어 출력하고 싶을 때]
      {인덱스:n}에서 :와 n사이에 공백에 넣고 싶은 문자를 적어주면 되는데, 이때 꼭 정렬방향도 같이 적어야 됨.
      ex. 10칸 지정하고 공백에는 *를 입력하고 싶으면 : print(“문자열 {0:*>10} 문자열” .format(0번째에 들어갈 값))

빠른 최대공약수

  • 방법1
    def gcd(a, b):
      for i in range(min(a, b), 0, -1):
    if a % i == 0 and b % i == 0:
      return i
    
  • 방법 2
    import math
    math.gcd(a, b)
    


마크다운에서 그냥 *를 적고 싶을 때

: \를 적고 *를 적어주면 됨.
즉, \* 하면 됨.


Today : 백준 4344, 2869, 2609 문제 풀음.

Categories:

Updated:

Leave a comment