위지원의 데이터 일기 🐈
Home
  • 분류 전체보기 (563)
    • ✎ 2025년 (4)
    • 2024년 (16)
    • 2023년 (6)
    • 2022년 (35)
      • Developement (22)
      • Error (9)
    • 2021년 (68)
      • ERROR (9)
      • 알고리즘 (11)
      • 개발공부 (21)
      • Data (15)
      • 21.下 (12)
    • 2020년 (164)
      • 코테 (84)
      • Development (29)
      • 정처기 (41)
    • 2019년 (27)
    • 2018년 (89)
      • English Speaking (8)
      • Error (12)
      • C, Java, FileSystem (13)
      • DataBase (15)
      • Java (2)
      • 지식 (16)
      • Go (3)
      • spark (9)
      • 영어 (5)
      • 알고리즘 (6)
    • 2017년 (143)
      • Error (17)
      • machine learning (16)
      • Spark (20)
      • Database (19)
      • Python (17)
      • Spring (9)
      • etc. (10)
      • 백준 (5)
      • Google Platform (12)
      • web Development (7)
      • Docker (3)
      • Linux (8)
Home
  • 분류 전체보기 (563)
    • ✎ 2025년 (4)
    • 2024년 (16)
    • 2023년 (6)
    • 2022년 (35)
      • Developement (22)
      • Error (9)
    • 2021년 (68)
      • ERROR (9)
      • 알고리즘 (11)
      • 개발공부 (21)
      • Data (15)
      • 21.下 (12)
    • 2020년 (164)
      • 코테 (84)
      • Development (29)
      • 정처기 (41)
    • 2019년 (27)
    • 2018년 (89)
      • English Speaking (8)
      • Error (12)
      • C, Java, FileSystem (13)
      • DataBase (15)
      • Java (2)
      • 지식 (16)
      • Go (3)
      • spark (9)
      • 영어 (5)
      • 알고리즘 (6)
    • 2017년 (143)
      • Error (17)
      • machine learning (16)
      • Spark (20)
      • Database (19)
      • Python (17)
      • Spring (9)
      • etc. (10)
      • 백준 (5)
      • Google Platform (12)
      • web Development (7)
      • Docker (3)
      • Linux (8)
블로그 내 검색
포트폴리오

위지원의 데이터 일기 🐈

데이터를 사랑하고 궁금해하는 기록쟁이입니다! 😉 Super Data Girl이 되는 그날까지🏃‍♀️ 화이팅!

  • 🖥 깃블로그
  • 🌍 위키원
  • 📑 내맘대로 스크랩
  • 💌 메일
  • 2020년/코테

    [파이썬 알고리즘 인터뷰] 가장 킨 팰린드롬

    2020. 12. 19. 13:33

    by. 위지원

    github.com/onlybooks/algorithm-interview

     

    유니코드 이야기.

    초기 문자표현 방식은 아스키였다. 아스키코드는 그러나 1바이트에 모든 문자를 표현했다. 1비트는 체크섬으로 제외하고 7비트(128글자)로 표현했었다. 이러다보니 한글이나 한자같은 2개이상의 특수문자를 합쳐 표현해 오류가 발생할때가 있었다.

    이를 해결하고자 넉넉한 2~4바이트 공간을 가진것이 유니코드였다. 그러나 유니코드는 메모리를 쓸때없이 잡아먹었다.

    이를 해결하고자 가변길이의 인코딩 방식인 UTF-8이 사용된 것이다.

    필요하면 개발하면 됩니다

    파이썬3은 실제 내부적으론 UTF-8 인코딩을 사용하지 않는다.

     

    아 우리 그런거 안해요 

    만약 문자열을 UTF-8로 인코딩하면 인덱스를 이용한 접근 시 각 문자마다 바이크 길이가 달라져 전체 문자열을 스캔하지 않는 이상 빠른 접근이 불가능하기 때문이다.

    그래서, 파이썬은 문자열 단위로 다른 고정 길이 인코딩 방식을 사용한다.

    if 모든 문자열 in 아스키 범위:

        Latin-1 인코딩(고정 1바이트)

    elif 특수 기호, 그림 이모티콘, 희귀 언어 등:

        UCS-4(고정 4바이트)

    else:

       UCS-2(고정 2바이트)


    5. Longest Palindromic Substring

    Given a string s, return the longest palindromic substring in s.

     

    Example 1:

    Input: s = "babad" Output: "bab" Note: "aba" is also a valid answer.

    Example 2:

    Input: s = "cbbd" Output: "bb"

     


     

     

    Longest Palindromic Substring - LeetCode

    Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

    leetcode.com

     

    투포인터를 이용해서 풀 수 있다. 

    투포인터(홀수, 짝수) 를 이용해 점점 확장(두 문자가 같을때까지)하면서 비교를 진행한다.

    class Solution:
    def longestPalindrome(self, s: str) -> str:
    def expand(left:int, right:int)->str:
    while left >=0 and right <= len(s) and s[left] == s[right-1]:
    left -=1
    right +=1
    return s[left+1:right-1]
    if len(s)<2 or s==s[::-1]:
    return s
    result = ''
    for i in range(len(s)-1):
    result = max(result,
    expand(i, i+1),
    expand(i, i+2),
    key = len)
    return result

     

    그냥 똑같은 문제다. 코드 그대로 써도 len만 추가하면된다... 뜨악 😌

     

    코딩테스트 연습 - 가장 긴 팰린드롬

    앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요. 예를들

    programmers.co.kr

     

    def solution(s):
    def expand(left:int, right:int)->str:
    while left >=0 and right <= len(s) and s[left] == s[right-1]:
    left -=1
    right +=1
    return s[left+1:right-1]
    if len(s)<2 or s==s[::-1]:
    return len(s)
    result = ''
    for i in range(len(s)-1):
    result = max(result,
    expand(i, i+1),
    expand(i, i+2),
    key = len)
    return len(result)
    profile
    위지원

    데이터 엔지니어로 근무 중에 있으며 데이터와 관련된 일을 모두 좋아합니다!. 특히 ETL 부분에 관심이 가장 크며 데이터를 빛이나게 가공하는 일을 좋아한답니다 ✨

    저작자표시 (새창열림)

    '2020년 > 코테' 카테고리의 다른 글

    [파이썬 알고리즘 인터뷰] 빗물 트래핑  (1) 2020.12.20
    [파이썬 알고리즘 인터뷰] 배열  (0) 2020.12.20
    [파이썬 알고리즘 인터뷰] 그룹 애너그램  (0) 2020.12.19
    [파이썬 알고리즘 인터뷰] 가장 흔한 단어  (0) 2020.12.19
    [파이썬 알고리즘 인터뷰] 로그파일 재정렬  (0) 2020.12.19

    잠깐만요~! 읽으신김에 이런 글들은 어떠세요? 👀

    • [파이썬 알고리즘 인터뷰] 빗물 트래핑 2020.12.20
    • [파이썬 알고리즘 인터뷰] 배열 2020.12.20
    • [파이썬 알고리즘 인터뷰] 그룹 애너그램 2020.12.19
    • [파이썬 알고리즘 인터뷰] 가장 흔한 단어 2020.12.19
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

열정! 열정! 열정! 🔥

Designed by Nana
블로그 이미지
위지원
데이터 엔지니어로 근무 중에 있으며 데이터와 관련된 일을 모두 좋아합니다!. 특히 ETL 부분에 관심이 가장 크며 데이터를 빛이나게 가공하는 일을 좋아한답니다 ✨

티스토리툴바

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.