목록Python (26)
archive
bisect 모듈은 기본적으로 binary search 알고리즘을 사용한다. (따라서 당연히 정렬된 시퀀스를 대상으로 사용한다.) ◆ bisect_left : 정렬된 순서를 유지하도록 할 때 시퀀스에 x를 삽일할 위치를 찾는다. 찾는 값과 동일한 값이 존재할 때, 그 값의 위치를 리턴한다. 찾는 값이 없을 때, 더 큰 값을 만나면 해당 위치를 바로 리턴한다. ◆ bisect_right : 시퀀스의 기존 항목 뒤에 오는 삽입 위치를 반환한다. 찾는 값과 동일한 값이 존재할 때, 그 값 바로 뒤 위치를 반환한다. 찾는 값이 없을 때, 더 큰 값을 만나면 해당 위치를 바로 리턴한다. 풀어쓰니 어려운데, 간단하게 말하면 left는 찾는 원소의 위치 & right는 찾는 원소의 다음위치를 반환하며 찾는 원소가 시..
현재 실행중인 프로세스의 PID(Process Identification Number)는 os 모듈로 구할 수 있다. import os print(os.getpid()) PPID(Parent PID)는 psutil 모듈을 통해 얻을 수 있다. import psutil psutil.Process(os.getpid()).ppid()
다른 언어의 경우 문자를 int형으로 형변환하면 아스키코드값이 나오지만, 파이썬은 별도의 내장함수를 사용한다. ord() : 문자를 아스키코드로 변환함 chr() : 아스키코드를 문자로 변환함 print(chr(65)) # A print(ord("A")) # 65
✏️ 문제 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net ✏️ 풀이 testcase 개수가 주어져있지 않은 문제이다. 단순히 무한반복문을 사용하면 EOF가 입력으로 들어왔을 때 EOFError가 발생한다. 따라서 이에 대한 처리를 해줘야 한다. 파이썬에서는 try-except를 이용한다. EOFError 가 발생한 경우 무한반복문을 탈출하여 프로그램이 종료되도록 한다. ✏️ 코드 while True: try: a, b = map(int, input().split()) print(a+b) except EOFError: break ✏️ 생각 알고리즘 문제에서 try-except는 처음 써보는 것 같다
✏️ 문제 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net ✏️ 풀이 10개의 수를 입력받아 42로 나눈 나머지 중, 서로 다른 값의 개수를 출력한다. 배열의 모든 원소를 42로 나눠준 후, set으로 형변환하여 중복 원소를 제거한 후 set의 원소의 개수를 출력하였다. ✏️ 코드 arr = [int(input()) for _ in range(10)] arr = list(map(lambda x : x%42, arr)) print(len(set(arr))) ✏️ 생각 쉬운 문제이지만 나에게 비교적 덜 익숙한 리스트 컴프리헨션, map, lambda, set 등을 모두 사용해봐서 기..
✏️ 문제 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net ✏️ 풀이 - 1차시도 1부터 10001 까지에 대해 해당 자연수가 1부터 10000까지의 자연수 중 하나를 생성자로 가지는 지 판별하였다. 결과 : 시간 초과(O(n^2)) for num in range(1,10001): for i in range(1,10000): if i > num: continue if num == i + sum(list(map(int, list(str(i))))): break ..