쑤야의 개발 블로그

고정 헤더 영역

글 제목

메뉴 레이어

쑤야의 개발 블로그

메뉴 리스트

  • 홈
  • 태그
  • 분류 전체보기 (98)
    • Algorithm (52)
    • CS (0)
    • AI (15)
      • PyTorch (4)
      • 논문 (3)
      • Open3D (7)
      • DL (0)
    • iOS (30)
      • RxSwift (4)
      • Combine (4)
      • Swift (1)
    • ETC (1)
      • 기타 (1)

검색 레이어

쑤야의 개발 블로그

검색 영역

컨텐츠 검색

Algorithm

  • Algorithm with python

    2024.02.01 by 쑤야.

  • [프로그래머스] 괄호 회전하기

    2023.12.15 by 쑤야.

  • [프로그래머스] 방금 그 곡

    2023.12.13 by 쑤야.

  • [프로그래머스] 짝지어 제거하기

    2023.12.12 by 쑤야.

  • [프로그래머스] 다음 큰 숫자

    2023.12.11 by 쑤야.

Algorithm with python

파이썬으로 알고리즘을 풀기 위해 필요한 개념들을 정리합니다. 문자열 문자열의 대/소문자화. .upper() # 대문자 .lower() # 소문자 특정 문자를 기준으로 문자열 분리 .split(문자) 문자열의 리스트화 list(문자열) 리스트화된 문자열 다시 문자열로 변환하기 ''.join(문자열 배열) 알파벳으로만 구성되어있는지 확인 문자열.isalpha() 배열 원소 추가 배열.append(원소) 마지막 원소 삭제 배열.pop() del 배열[-1] 첫 번째 원소 삭제 삭제한 원소 = 배열.pop(0) #삭제한 원소를 반환한다. 조건을 충족하는 첫 번째 인덱스 찾기 arr.index(원소 값) 정렬 배열.sort() # 오름차순 배열.sort(reversed=True) # 내림차순 원소의 길이로 정렬 ..

Algorithm 2024. 2. 1. 12:26

[프로그래머스] 괄호 회전하기

접근 괄호 문제에서 올바른 괄호인지 판단하려면 스택 활용 문자열 회전이 필요하므로 이중 반복문 활용 로직 i는 시작점을 나타내는 인덱스, j는 현재 점검하고 있는 원소 인덱스 스택의 마지막 원소와 현재 원소를 합친 문자열이 (), [], {} 에 해당하는 올바른 괄호인지 확인 반복문이 종료된 후 스택이 비어있다면 올바른 괄호로 result 값 1 증가, 비어있지 않으면 올바르지 않은 괄호 코드 def solution(s): s = list(s) bracket = ["()","[]","{}"] result = 0 for i in range(0, len(s)): stack = [s[i]] j = 0 if i+1 == len(s) else i+1 while j != i: if len(stack) != 0 an..

Algorithm 2023. 12. 15. 14:38

[프로그래머스] 방금 그 곡

로직 m에 대해 악보에 포함된 #을 제거준다. 특정 문자열을 포함하는지 여부를 확인해야 하는데, ABC#과 ABC는 모두 ABC를 포함하기 때문이다. C#을 c로 변환하는 등, C와 구분될 수 있도록 변환해준다. 결과값을 담을 변수를 선언해주는데, 곡의 제목과 재생시간을 같이 담을 수 있는 자료구조를 선택한다. 시간을 분 단위로 변환하여 재생시간을 구한다. m과 마찬가지로 주어진 악보 정보에 대해 #을 제거준다. 악보 정보를 활용하여 재생 시간만큼의 전체 악보를 생성한다. 문자열 포함 여부를 통해 찾고 있는 곡이 맞는지를 확인한다. 찾고 있는 곡이 맞다면, 재생시간 비교를 한다. 재생 시간이 더 길다면 result를 갱신해준다. 코드 func solution(_ m:String, _ musicinfos:..

Algorithm 2023. 12. 13. 17:35

[프로그래머스] 짝지어 제거하기

접근 처음에 시간초과가 날 로직밖에 생각이 안났다. 문자열을 한 바퀴만 돌린다고 해도 100M이다. O(N log N)일 경우, 딱 마지노선이라 생각했기 때문에 무조건 O(N)으로 끝내야겠다고 생각했다. 문자열에서 조건이 맞으면 문자들을 제거해야 하기 때문에 빠르게 배열의 중간 원소를 제거할 수 있는 알고리즘과 자료구조가 무엇인지를 생각했다. 배열의 원소를 빠르게 제거해야 하는 경우 → 스택 활용 로직 문자열의 원소에 대해 반복문을 돌린다. 각 문자들을 스택에 저장한다. 스택의 마지막 문자와 현재 문자가 동일할 경우, 스택의 마지막 문자를 제거한다 → O(1) 반복문이 종료된 이후, 스택에 문자가 남아있는 경우 성공적으로 수행하지 못한 것. 반대로 빈 스택일 경우 성공적으로 수행할 수 있음을 의미한다. ..

Algorithm 2023. 12. 12. 14:56

[프로그래머스] 다음 큰 숫자

https://school.programmers.co.kr/learn/courses/30/lessons/12911 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 로직 1. 0번째 인덱스가 1이거나, 0이 아예 존재하지 않을 경우 0번째 인덱스에 0 삽입. '01' 이 나타나는 마지막 인덱스를 찾는다. 마지막 '01' 이후에 등장하는 1의 개수를 카운팅한다. 마지막 '01'을 '10'으로 스와이프해준다. 이후 등장하는 1은 끝자리로 몰아준다. 코드 def solution(n): binary = list(format(n, 'b')) if '0' not in ..

Algorithm 2023. 12. 11. 13:42

추가 정보

인기글

최신글

페이징

이전
1
다음
TISTORY
쑤야의 개발 블로그 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바