목록algorithm:inflearn (14)
하루한줄 코딩일기
인프런 > 파이썬 알고리즘 문제풀이 섹션 3.4 두 리스트 합치기 👊 내 문제 풀이 + 혹은 __add__ 메서드를 이용해 두 리스트를 결합한 후 오름차순으로 정렬한다. n1 = int(input()) list1 = list(map(int, input().split())) n2 = int(input()) list2 = list(map(int, input().split())) # list1 + list2 후 정렬 list1 = sorted(list1+list2) for i in list1: print(i,end=" ") 채점 결과 💡 강의 해답 이 문제는 이미 정렬되어 입력되기 때문에, 이를 활용하는 것(O(n))이 sort() 내장함수를 쓰는 것(O(nlogn))보다 시간복잡도가 좋다. n=int(inp..
인프런 > 파이썬 알고리즘 문제풀이 섹션 3.3 카드 역배치 👊 내 문제 풀이 card[a : b+1] 를 한 결과에 다시 [ : : -1] 을 해서 해당 구간을 뒤집으려고 했으나 한 번에 이어서 작성해도 정상적으로 실행됐다. card = [] for i in range(21): #카드 채우기 card.append(i) for i in range(10): #카드 구간 뒤집기 a, b = map(int, input().split()) card[a:b+1] = card[a:b+1][::-1] for n in card[1:]: #카드 출력하기 print(n,end=' ') 채점 결과 💡 강의 해답 0부터 20까지의 수로 채워진 리스트를 생성하는 코드는 list(range(21))로 간단하게 작성할 수 있다. ..
인프런 > 파이썬 알고리즘 문제풀이 섹션 3.2 숫자만 추출 👊 내 문제 풀이 얼마 전 풀었던 카카오 신규 아이디 추천 문제에서 공부한 정규표현식 re.sub()을 활용했다. 숫자(\d)가 아닐(^) 경우 빈 문자열로 치환하여 제거하고, 문자열이 0으로 시작하는 동안 가장 앞의 0을 제거한다. 그 후 최종 숫자와 그의 약수의 개수를 구하여 출력한다. import re txt = input() cnt = 0 txt = re.sub('[^\d]','',txt) #숫자가 아닐 경우 제거 while txt.startswith('0'): #0으로 시작할 경우 제거 txt = txt[1:] # txt의 약수의 개수 구하기 for i in range (1,int(txt)+1): if int(txt) % i == 0:..
인프런 > 파이썬 알고리즘 문제풀이 섹션 3.1 회문 문자열 검사 👊 내 문제 풀이 회문 검사 시 대소문자를 구분하지 않기 때문에 먼저 문자열을 모두 소문자로 변환한다. 문자열 text와, text를 reverse한 값 text[ : : -1]이 동일할 경우 YES를 출력, 다를 경우 NO를 출력한다. n=int(input()) for i in range(n): text = input().lower() if text == text[::-1]: print("#%d YES" %(i+1)) else: print("#%d NO" %(i+1)) 채점 결과 💡 강의 해답 풀이 #1 n=int(input()) for i in range(1, n+1): str=input() str=str.upper() for j in..
인프런 > 파이썬 알고리즘 문제풀이 섹션 2.10 점수계산 👊 내 문제 풀이 앞서 풀었던 백준 8958번(OX퀴즈) 문제와 거의 동일한 문제다. 정답일 경우(1) 총 점수에 누적점수를 더한 한 후 누적점수에 1점을 추가하고, 오답일 경우(0) 누적점수를 1로 초기화해준다. score=0#총점수 plusscore=1#누적점수 N=int(input()) arr=list(input()) for i in arr: if i == "1": score += plusscore plusscore += 1 elif i == '0': plusscore = 1 print(score) 채점 결과 💡 강의 해답 n=int(input()) a=list(map(int, input().split())) cnt=0 sum=0 for i..
인프런 > 파이썬 알고리즘 문제풀이 섹션 2.9 주사위 게임 👊 내 문제 풀이 N=int(input()) sum = 0 max_sum = 0 for i in range (N): d1, d2, d3=list(map(int, input().split())) if d1==d2==d3:#같은 눈 3개 sum=10000+d1*1000 elif d1==d2 or d1==d3:#같은 눈 2개 sum=1000+d1*100 elif d2==d3:#같은 눈 2개 sum=1000+d2*100 else:#모두 다른 눈 sum=max(d1,d2,d3)*100 #상금 합의 최댓값 구하기 if sum>max_sum: max_sum = sum print(max_sum) 채점 결과 💡 강의 해답 max=0 res=0 n=int(inp..
인프런 > 파이썬 알고리즘 문제풀이 섹션 2.8 뒤집은 소수 👊 내 문제 풀이 1) reverse() 함수 숫자를 문자열로 변환한 후 문자열 슬라이싱을 이용해 문자열을 뒤집고, 다시 int 타입으로 변환하여 return 한다. 뒤집은 수가 0으로 시작할 경우, str -> int 변환 과정에서 자동으로 0이 소거되기 때문에 따로 처리해줄 필요는 없다. 2) isPrime() 함수 숫자 x가 1이면 바로 False를 반환하고, 1이 아닐 경우 2 이상 x 미만의 범위에 약수가 존재하는 지 확인한다. 1과 자기 자신이 아닌 또 다른 약수가 존재하면 소수가 아니므로 False 반환한다. 모두 해당 사항이 없을 경우 True를 반환한다. n=int(input()) arr = list(map(int, input(..