🐥 Records/Daily | Today I Leared

[TIL] 99클럽 코테 스터디 16일차 TIL + Swift로 알고리즘

이오🐥 2025. 4. 21. 23:18

🍀 오늘의 회고

Swift로 알고리즘을 풀어보기로 하고, 오늘 시작한 날이다. 3주간 알고리즘 스터디를 하면서 매일 2-3문제씩 풀어 왔는데, 요즘 적절한 알고리즘 선택과 예상하지 못한 경우 등의 고민을 하면서 약간 힘들었던 것 같다. Swift로 풀이하기 시작하면서 다시 알고리즘의 재미를 찾아가야겠다. 면접 준비를 하면서 나에 대해 많이 돌아봤다. 내가 가장 먼저 언급하고 싶은 개발자로서의 나의 모습, 내 성격, 프로젝트에서 있었던 일들, 그동안의 나를 돌아보게 된다. 면접을 준비한다고 하지만, 여러모로 나에게 도움이 되는 것 같다. 네트워크 공부를 다시 시작했다. 볼수록 내가 모르던 내용이 많았다는 사실을 깨닫는다. 오늘도 역시나 배우는 즐거움을 느낀다.

 

✅ 오늘의 TODO

- 알고리즘

  - 20:00 알고리즘 스터디

  - 오늘의 문제 ✅

  - Swift로 풀이하기 시작 

- 컴피

  - PR 리뷰 답변

- 네트워크 3장 네트워크 계층 🔜

- 면접 준비

- TIL 작성 

 

 

🌼 오늘의 문제 - 프로그래머스. 2021 카카오 블라인드 채용 - 신규 아이디 추천

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

오늘의 문제는 프로그래머스였다. 벌써 알고리즘 스터디 마지막 주인데, 스터디가 끝나고 난 후에도 꾸준히 문제를 풀 동기를 만들어야겠다. 이번 문제는 엄청 친절하게 각 단계에서 처리해야 할 내용을 알려준다. 총 7단계로 이루어져 있고, 사용자가 입력한 아이디를 조건에 맞게 수정하는 문제다. Lv1 문제였고, 어렵지 않게 풀었다! 다만 기본 내장 함수를 잘 알고 있어야 금방 풀릴 것 같다.

def solution(new_id):
    answer = ''

    # 1단계 소문자로
    new_id = new_id.lower()

    # 2단계 알파벳, 숫자, -_.
    for i in range(len(new_id)):
        char = new_id[i]
        if char.isalpha() or char.isdigit() or char in ["-", "_", "."]:
            answer += char

    new_id = answer
    answer = ""
    # 3단계 연속된 . 하나로 변경
    for i in range(len(new_id)):
        char = new_id[i]
        if char == "." and new_id[i - 1] == ".":
            answer += ""
        else:
            answer += char

    # 4단계 처음과 끝의 . 삭제
    if len(answer) > 0:
        if answer[0] == ".":
            answer = answer[1:]

        if answer[-1] == ".":
            answer = answer[:-1]

    # 5단계 빈문자열은 "a"
    if answer == "":
        answer = "a"

    # 6단계 16글자 이상이면, 15개만 마지막 . 제거
    if len(answer) >= 16:
        answer = answer[:15]
        print(answer[-1])
        while answer[-1] == ".":
            answer = answer[:-1]

    # 7단계 2글자 이하이면, 마지막 문자를 3이 될 때까지 추가
    while len(answer) < 3:
        answer += answer[-1]

    return answer

 

 

🌼 Swift 알고리즘 풀이 시작!

그동안 알고리즘은 파이썬으로만 해왔는데, Swift로 풀이하는 것도 해보려고 한다. 일부 Swift로만 풀어야 하는 기업이 있기도 하고, iOS 개발하면서.. Swift에 좀 더 가까워질 수 있지 않을까 하는 생각! ㅎㅎ 하지만 첫 번째로 푼 문제부터 아주 어이없는 오류가 있었다. 그냥 숫자 두 개를 합하는 문제였는데, 시간 초과가 났다. 변수 하나 만들어서 출력했더니 해결됐다. 프로그래머스 오류.. 인걸로...