프로그래밍 공부/Python

프로그래밍 공부/Python

[Python] defaultdict()

여느 때와 다름없이 알고리즘 문제를 풀고 있었다. (문제는 [프로그래머스 - 여행경로] 참고) 문제 초반부에서 만약 경로가 [a, b], [b, c], [c, a] 처럼 주어졌다고 하면, a -> b라는 경로들의 방향을 담고 싶다. 하지만 a가 str형이라 인덱스(정수 고정) - 값처럼 사용할 수 없어 리스트를 못 사용했다. 그래서 키(문자 가능) - 값(문자 가능)처럼 dictionary를 사용해서 문제를 풀었다. 나는 아래 코드처럼 사용했다. tickets = [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] t_dict = dict() for i in range(len(tickets)): if tickets..

프로그래밍 공부/Python

[Python] sys.setrecursionlimit()

평소에 알고리즘 풀 때, BFS로만 풀어서 DFS로도 좀 풀어볼까 하다가 예제는 맞는데 자꾸 런타임 에러로 틀려서 검색하면서 찾아보다가 '# dfs 반복 횟수 제한 해제' 라고 주석처리 되어있는게 있길래 한번 넣어봤더니 통과했다. 찾아보니까 파이썬에서는 재귀를 사용할 때 최대 깊이가 기본 1,000회로 설정되어 있다고 한다. 그래서 아래 코드를 사용하면 이 설정이 늘어나게 되는 것. import sys sys.setrecursionlimit(10 ** 9) 이런 식으로 코드를 작성하면 최대 깊이가 10**9로 바뀌게 된다. input은 sys.stdin.readline bfs는 from collections import deque dfs는 sys.setrecursionlimit(10 ** 9) 이런 수준..

프로그래밍 공부/Python

[Python] 파이썬 함수 정리(exit, ljust, rjust, center)

exit()만 적으려다가 양이 적은가 싶기도 하고 그냥 자주 안써서 손에 안익은(?) 함수들을 좀 적어봤다. 1. exit() 코드를 강제 종료하고 싶을 때 사용하는 함수 break, contunue들이랑 헷갈릴 수 있는데 얘내는 반복문을 벗어나는(제어하는) 함수이다. 기본적인 사용법은 아래와 같다. exit(0) # 성공적 프로그램 종료 (EXIT_SUCCESS) exit(1) # 성공적X 프로그램 종료 (EXIT_FAILURE) quit() # (SystemExit) sys.exit("성공적으로 프로그램 종료") # SystempExit: 성공적으로 프로그램 종료 근데 뭐 다 모르겠고 거의 exit(0)만 알면 된다. 사용했던 이유는 3차원 배열에서 삼중 for문에서 -1출력하고 끝내야 했을 때 사용..

프로그래밍 공부/Python

[Python] round() 함수

round() 함수 1. 산술평균 : N개의 수들의 합을 N으로 나눈 값 첫째 줄에는 산술평균을 출력한다. 소수점 이하 첫째 자리에서 반올림한 값을 출력한다. 위에서 주어진 것 처럼 산술평균을 구해야했었는데, 그냥 몫 나누기, 나눈 값을 int()로 감싸기 이렇게 두 방법으로 해봤다. 근데 다 안되길래 소수점 이하 첫째 자리 반올림하는 거랑 정답이 다르겠거니 했긴 했는데 사용법을 모르겠어서 검색해봤다. 자세한 문제는 [백준] 2108번 - 통계학 참고 아래처럼 round(실수, n) 형식으로 사용한다. (round(1.55555, 1) # 1.6 (round(1.55555, 0) # 2 Notion Link : https://solar-textbook-084.notion.site/round-6785865..

프로그래밍 공부/Python

[Python] 사전(Dictionary) 자료형 + 정수형 출력

사전(Dictionary) 자료형 매번 딕셔너리 만들 때, 자꾸 버벅거리길래 기록용 import sys input = sys.stdin.readline n = int(input()) lst = list(map(int, input().split())) # Key Value 이렇게 설정 for i in lst: if i in answer: answer[i] += 1 else: answer[i] = 1 [3. 람다식] 이용하여 Keys, Values 정렬 출력 가능 정수(Integer)형 출력 정수+문자 같이 출력할 때 num1, num2 = 5, -10 print("%d와 %d는 다르다" %(num1, num2)) # % 사용 print(f"{num1}와 {num2}는 다르다") # f문자열 print(fo..

프로그래밍 공부/Python

[Python] try except

[백준] 10951번 A+B - 4 문제 내용 자체는 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 라는 문제인데 몇 번 입력받을 것인지 주어지지 않았다. 그래서 알아서 입력이 멈추면 정지해야 하는데 솔직히 어떻게 할 지 몰랐다. 찾아본 결과 try except를 사용하는 것 같아서 정리해보려고 한다. try except while True: try: A, B = map(int, input().split()) print(A+B) except: break # try: A, B에 int형이 들어가면 A+B 출력 # except: try에 대한 에러 발생 시 break # while이 가장 큰 범위이기 때문에 에러가 생기면 반복이 멈춘다. while과 try except whil..

프로그래밍 공부/Python

[Python] readline, 함수(문자열, 리스트, sort), 람다식, Itertools

0. sys.stdin.readline 시작하기 앞서서 파이썬은 입력받을 때 input() 을 이용하여 받는다.(특히 백준) 근데 요것이 시간을 잡아먹기 때문에 반복문이라도 들어가면 어김없이 시간 초과다. 그것을 방지하기 위해 sys 라이브러리를 이용하게 되는데 그 중 sys.stdin.readline 을 사용한다. 사용 예시와 응용은 밑의 코드 참조 import sys input = sys.stdin.readline # input 대신에 사용하기 위해서 이렇게 선언 #1 보통 한 개의 정수형 받을 때 n = int(input()) #2 한 줄에서 여러 개의 정수형 리스트로 받을 때 lst = list(map(int, input().split())) #3 여러 줄에서 문자열 받을 때 for i in ra..

티키택
'프로그래밍 공부/Python' 카테고리의 글 목록