본문 바로가기

전체 글

(74)
[PYTHON] string 관련 함수 1. 대소문자 관련 함수 1. upper, lower str.upper() : str을 대문자로 변경 str.lower() : str을 소문자로 변경 a = “ I Love You “ print(a.upper()) print(a.lower()) >>>I LOVE YOU >>>i love you 2. isupper, islower str.isupper() : 전체 문장이 대문자인지 확인하여 True, False로 반환 str.islower() : 전체 문장이 소문자인지 확인하여 True, False로 반환 a = “ I Love You “ print (a.isupper()) print (a.islower()) >>>False >>>False 2. 해당하는 문자를 제거하는 함수 str.strip([char]..
[이것이 코딩테스트다] 실전 - 만들 수 없는 금액* 나의코드 # 나의코드 # 조합 from itertools import combinations n = int(input()) t=[] array = list(map(int, input().split())) # 주어진 수로 만들 수 있는 모든 조합 만들기 for i in range(2,n+1): t+=list(combinations(array,i)) # 각 조합의 합구하기 s = list(map(sum,t)) s += array # 중복된 숫자를 제거하여 주어진 수들로 만들 수 있는 모든 정수가 담긴 리스트 s = list(set(s)) # 가장 작은 수가 1이 아니라면 1 반환 if s[0]>1: print(1) else: for i in range(1,len(s)): # 두 정수의 차>1면 두 정수 사이..
[이것이 코딩테스트다] 실전 - 문자열 뒤집기 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 나의코드 # 나의코드 n = input() count=0 default=n[0] for i in range(1,len(n)): if n[i]!=default: if n[i-1]!=n[i]: count+=1 print(count) 최소한의 횟수로 연속된 문자 그룹을 뒤집어 최종적으로 모든 동일한 숫자로 만드는 것이다. 이는 즉 모든 숫자에 대해서 0->1 혹은 1->0으로 하나를 결정하여 바꿔주면 된다. 나의 코드에서는 첫번째 숫자를 기준으로 하여 n=000110..
[이것이 코딩테스트다] 실전 - 곱하기 혹은 더하기* 나의코드* # 나의코드 # 그리디 알고리즘 number = input() result=int(number[0]) for i in range(1,len(number)): # 해당 수 또는 이전 수가 0이면 더하기 if int(number[i-1]) in (0,1) or int(number[i]) in (0,1) : result += int(number[i]) else: result *= int(number[i]) print(result) 그냥 딱봐도 그리디 알고리즘임을 알 수 있는 문제였다. 곱하기는 더하기보다 당연히 크고 곱하기가 더하기보다 작은 경우는 0과1 밖에 없다.그래서 그런 예외만 처리하면 된다. 하지만 여기서 난 아주 큰 실수를 했다. 해당 수 이전 값이 중요한게 아니라 이전까지 계산된 결과가..
[이것이 코딩테스다] 실전-모험가 길드* 나의코드 # 나의 코드 # 그리디 알고리즘 n = int(input()) people = list(map(int, input().split())) people.sort() i = -1 count = 0 # 공포도가 큰 사람부터 작은 사람으로 while i >= -n: # 남은 사람이 공포도보다 많은지 파악 if people[i]-1 = x: result+=1 count = 0 print(result) 위에서 설명했 듯이 정렬 후 공포가 작은 수 부터 차례대로 확인하여 문제를 해결하였다. 그리디 알고리즘의 핵심은 정당성을 찾는 것이다. 내가 단순하게 작은 것부터 또는 큰 것부터 비교하더라도 해당 문제를 풀 수 있을 것이라는 하지만 나는 이러한 정당성을 찾지 않아 위와 같은 오류를 범했다.
이해인 - 내가 나에게 내가 나에게 오늘은 오랜만에 내가 나에게 푸른 엽서를 쓴다 어서 일어나 섬들이 많은 바다로 가자고 파도 아래 숨 쉬는 고요한 깊이 고요한 차가움이 마침내는 따뜻하게 건네오는 하나의 노래를 듣기 위해 끝까지 기다리자고 한다 이젠 사랑할 준비가 되었냐고 만날적마다 눈빛으로 내게 묻는 갈매기에게 오늘은 이렇게 말해야지 파도를 보면 자꾸 기침이 나온다고 수평선을 향해서 일어서는 희망이 나를 자꾸 재촉해서 숨이 차다고 - 사람들은 말한다. 행복하자고 그리고 말한다. 항상 내가 좋아하는 일만 하고 살 수는 없는거라고 참 모순적이다. 모두가 행복하고 싶은데 행복한걸 할 수 없는게 세상의 이치란다. 그러니깐 현재 주어진거에 만족하라고 그럼 언젠가는...언젠가는 너가 원하는걸 할 수 있을거라고 마치 미래라는 녀석이 나에..
[PYTHON] set() 1. set() set() : 집합과 관련된 연산을 쉽게 처리하기 위해 지원하는 자료형 리스트 내 중복을 제거하기 위해 사용됨. 중복을 허용하지 않는다. 순서가 없다. -> 인덱 사용 X # 중복 제거 s1 = set([1,2,3,3]) print(s1) >>>{1, 2, 3} # 순서가 없음 s2 = set("Hello") print(s2) >>>{'e', 'H', 'l', 'o'} 2. 다양한 집합 연산 s1 = set([1, 2, 3, 4, 5, 6]) s2 = set([4, 5, 6, 7, 8, 9]) # 교집합 print(s1 & s2) print(sl.intersection(s2)) >>> {4, 5, 6} # 합집합 print(s1 | s2) print(s1.union(s2)) >>> {1,..
[이것이 코딩테스트다] 이진 탐색 알고리즘에서 매우매우 중요한!! 출제빈도가 아주아주 높은!! 이진탐색을 다뤄보도록 하겠습니다. 변수의 범위가 매우 넓을 경우 일단 무조건 생각해야하는게 바로 이진 탐색이죠! 지금부터 다뤄보도록 하겠습니다. 해당 내용은 '이것이 코딩테스트다'를 정리한 내용입니다. 1. 이진 탐색 이진 탐색 : 시작점, 끝점, 중간점으로 이루어진 알고리즘으로 찾으려는 데이터와 중간점 위치에 있는 데이터를 반복적으로 비교하여 원하는 데이터를 찾는 탐색 과정 이진 탐색은 중간점과 비교하려는 target과의 대소를 비교하여 start, end를 수정해 나가는 과정이다. 시간복잡도 이진 탐색 알고리즘의 시간 복잡도는 O(㏒N)이다. 이는 직관적으로 이해가 가능한데, 이진탐색 알고리즘은 한 단계를 거칠 때마다 확인하는 원소가 평균적..

728x90
반응형