목록파이썬 (12)
-
문제https://www.acmicpc.net/problem/11059 풀이1. 문자열을 정수 배열로 변환한다.2. 해당 배열의 누적 합을 새로운 배열에 추가한다.3. 모든 짝수 길이의 부분 문자열을 탐색하며 절반의 합을 계산한다.4. 만약 절반의 합이 서로 일치한다면 해당 문자열을 길이를 저장한다. 코드def find(s): n = len(s) ans = 0 # 문자열을 정수 배열로 변환 arr = [int(char) for char in s] # 누적 합 계산 prefix_sum = [0] * (n + 1) for i in range(1, n + 1): prefix_sum[i] = prefix_sum[i - 1] + arr[i ..
문제 https://www.acmicpc.net/problem/1347 코드 n = int(input()) cmd = input() dx, dy = [-1, 0, 1, 0], [0, 1, 0, -1] V = [['#' for j in range(101)] for i in range(101)] x, y, d = 50, 50, 2 ex = ey = sy = sx = 50 V[x][y] = '.' for i in cmd: if(i == 'L'): d = (d+3) % 4 elif(i == 'R'): d = (d+1) % 4 else: x = x + dx[d] y = y + dy[d] V[x][y] = '.' sy, ey, sx, ex = min(sy, y), max(ey, y), min(sx, x), max(..
while True: try: n, m = input().split() except: break input 개수를 모를 때는 위 코드처럼 while True로 입력을 계속 받다가 EOF를 만나 에러가 날 때 except 문으로 캐치해 break로 입력을 중단시킨다.
https://www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net 내 코드 a = int(input()) #숫자를 입력받음 b = str(a) #입력받은 숫자를 문자열로 바꿈 sum = 0 #변환된 10진수를 저장할 변수 mul = 0 for i in range(len(b)-1,-1,-1): sum += (int(b[i]) * (2**mul)) mul += 1 #8진수는 0o314 같이 앞에 "0o"이 붙으므로 #"o"를 기준으로 분리해서 뒤의 숫자만 출력 print(oct(sum).split("o")[1]) 하지만 제출해보니 시간초과로 통과되지 못했다. 구글링을 ..
1. sep(seperation) 출력할 요소들을 분리해서 출력하는 옵션이다. 중간중간에 뭐가 들어갈지 지정해줄 수도 있다. print("a", "b", "c", sep='') print("a", "b", "c", sep='/') print("a", "b", "c", sep='@@') # 출력 결과 abc a/b/c a@@b@@c 2. end end 를 사용하면 그 다음의 출력값과 이어서 출력한다. 파이썬은 프린트시에 자동 개행이 되므로, 이를 무시하고 싶을 때 자주 사용한다. print("hello", end='') print("world") # 출력 결과 helloworld print("hello", end='!!!!! ') print("world") # 출력 결과 hello!!!!! world 3...
파이썬 문법의 장점을 극대화시키는 문법인 리스트 컴프리헨션은 직관적으로 리스트를 생성하는 방법이다. 대괄호 [] 내부에 for문과 if문을 사용하여 조건에 만족하는 것만 리스트로 생성할 수 있다. 리스트 컴프리헨션을 사용하는 가장 큰 이유는 직관적이고, 코드를 한줄로 만들 수 있으며 속도면에서도 우수하기 때문이다. 리스트 생성 기존에 알던 문법으로 1부터 10까지의 정수를 리스트로 만드는 방법은 다음과 같다. numbers = [] for n in range(1, 10+1): numbers.append(n) 이 코드를 리스트 컴프리헨션으로 표기하면 다음과 같다. numbers = [x for x in range(10)] 동작 원리 조건 걸기 1부터 10까지 정수 중 짝수만 들어있는 리스트를 만드는 코드는..
1. Dictionary 생성 # 직접 생성하기 a = {'a': 0, 'b': 1, 'c': 2, 'd': 3} # zip 함수를 사용해서 생성하기 - zip(key list, value list) a = dict(zip('abcd',[0,0,0,0])) # 만들어진 dictionary {'a': 0, 'b': 0, 'c': 0, 'd': 0} 2. 최대 value에 대한 key 값 찾기 1. 최대 value가 1개일 때 example = {'a': 0, 'b': 1, 'c': 2, 'd': 3} # max(이름, key=이름.get) tmp = max(example,key=example.get) print(tmp) # 출력 결과 d 2. 최대 value가 2개 이상일 때 a = {'a': 0, 'b'..