본문 바로가기

728x90

알고리즘

(5)
[Python algorithm interview] string_2 문자열 뒤집기 파이썬 알고리즘 인터뷰의 2020ver.을 리뷰하고 있습니다. 2. 문자열 뒤집기 이번에는 매우 간단한 문항입니다. 저자에 의하면 투 포인터(Two pointer)라는 방식과 reverse()를 사용하는 방식으로 풀이가 가능합니다. 🎈문제 문자열을 뒤집는 함수를 작성하라. 입력값은 문자 배열이며, 리턴 없이 리스트 내부를 직접 조작하라. 🔑입력 예제 ["h", "e", "l", "l", "o"] ["o", "l", "l", "e", "h"] 두번째 ['H', 'a' , 'n', 'n', 'a', 'h'] ['h', 'a' , 'n', 'n', 'a', 'H'] 🛴 풀이법. ep1 two pointer def se1(s:list[str]): left, right = 0, len(s)-1 while left..
[Python algorithm interview] 파이썬 기초 정리 파이썬 알고리즘 인터뷰에 대한 필자의 리뷰 및 테스트 예제입니다. 파이썬 알고리즘의 기초문제, 문자열부터 시작합니다. 앞전의 내용은 파이썬의 기본적인 내용에 대해서 다루고 있었습니다만 필자의 전 글에서 제시한 내용과 유사하므로 생략했습니다. 다만, 시간복잡도에 대한 내용은 유용한 것으로 보입니다. 멈춰있는 version 난이도 1의 문자열 문항입니다. 1. 유효한 펠린드롬 구해보기 🎈문제 주어진 문자열이 펠린드롬인지 확인하라. 대소문자를 구분하지 않으며, 영문자와 숫자만을 대상으로 한다. 🔑입력 예제 'A man, a plan, a canal: Panama' true 펠린드롬이란? 코딩테스트에 설명없이 처음보는 단어가 계속 등장한다면 여간 당황스러운 일이 아닐 것입니다. 펠린드롬이란 앞에서 부터 읽어도,..
[Baekjoon] 백준 #4344번 파이썬 해답 백준 알고리즘 단계별로 풀어보기의 1차원 배열, 아홉번째, 문제입니다. 먼저 문제를 한번 읽어보겠습니다. 문제 제시 출력 부분에서 소수점 셋째 자리까지 출력해야 하는 것을 확인하실 수 있습니다. 이쯤에서 format, 혹은 F-스트링을 써야 한다는 생각이 들었으면 합니다. f'{p:.3f}%' 입력 예시도 보겠습니다. 정답 공개 C = int(input()) B=[] for _ in range(C): A = list(map(int, input().split())) av = sum(A[1:])/ A[0] # 평균 c = 0 for i in A[1:]: if i > av: c = c+1 p = (c / A[0])*100 # 퍼센트에이지 계산 print(f'{p:.3f}%') # 소숫점 형태로 변환함 (F-스..
[Baekjoon] 백준 #10871번 파이썬 해답 10891번 백준의 단계별 풀어보기 중 1차원 배열에 들어있는 문제입니다. 배열에 대한 사전지식이 없으면 '어?' 할 수 있는 알고리즘입니다. 1차원 배열에 대해서 기초적인 지식을 확인하는 부분입니다. 필자의 게시글 중 파이썬의 응용단계, numpy편에서 이에 대해 다룬적이 있습니다. https://astart.tistory.com/20 파이썬_응용단계 ep.2 Numpy 튜토리얼 서론 추후 Pandas를 원활하게 쓰기 위해, numpy는 중간단계로서 거쳐갑니다. 왜 numpy가 필요하다고 했죠? 강력한 행렬 조작, 연산을 시작할 수 있기 때문에 필요하다고 했습니다. 즉, 목적지가 아닙 astart.tistory.com 1차원 배열은 쉽게 말해 같은 자료형으로 연속된 메모리공간을 할당하여 사용하는 것입니..
[Baekjoon] 백준 #1110번 파이썬 해답 (애국자 ver) 백준의 반복문 문제 중 while문을 사용한 사례입니다. 단계별 → 반복문에서 마지막에 위치하고 있습니다. 일단 문제를 읽어보겠습니다. 보았을때 머릿속에서 바로 팍! 떠오르진 않습니다. 중요한점은 N의 사이클 길이를 구한다는 점입니다. 생각할 시간 . . str을 써서 두자리 수를 입력했을때, 10의 자릿수와 1의 자릿수를 분리하고 이를 따로 때네어 하는 계산방법이 있을 것이라고 생각됩니다. 다만 잘 되지 않았습니다. . . 생각할 시간 x 2 . . 잠시 멈추고 굳이 str을 쓰지 않아도 두자리수를 떼내야 한다면 나눗셈을 사용해서 떼낼수 있지 않을까요. 나머지와 몫을 떼서 10을 곱하면 방법이 나오지 않을까 합니다. 몫 = N // 10 나머지 = N % 10 실제로 생각을 편하게 하기 위해서 한글로 ..

728x90