상세 컨텐츠

본문 제목

제목: 99클럽 코테 스터디 3일차 TIL + 오늘의 학습 키워드 : 문자열

본문

728x90
반응형

3일차 도장 꾹!!너무 급하게...꾹했어..

 

제목: 99클럽 코테 스터디 3일차 TIL + 오늘의 학습 키워드 : 문자열

- 오늘의 학습 키워드 : 문자열


미션 1완료

 


- 공부한 내용 본인의 언어로 정리하기
1.while문

: while문은 조건이 참인 동안 반복 실행되는 루프입니다. 주로 반복 횟수가 정해지지 않았거나, 특정 조건이 만족될 때까지 반복해야 할 때 사용됩니다

사용예시

# 기본 구조
while 조건:
    # 반복 실행할 코드


# 1. 카운트 사용
count = 0
while count < 5:
    print("Count is:", count)
    count += 1  # 카운터 증가
    
# 2. 사용자 입력 처리
user_input = ""
while user_input.lower() != "quit":
    user_input = input("Type something (type 'quit' to exit): ")
    print("You typed:", user_input)

# 3. 리스트의 요소 처리
numbers = [1, 2, 3, 4, 5]
index = 0

while index < len(numbers):
    print("Number:", numbers[index])
    index += 1

# 4. 무한루프와 조건문
while True:
    response = input("Enter 'exit' to quit: ")
    if response.lower() == 'exit':
        print("Exiting the loop...")
        break  # 루프 종료
    print("You entered:", response)

 

 

 


- 오늘의 회고

오늘 생각보다 집에 10시 즈음에 들어와서, 급하게 코테 알고리즘 생각해보고
뤼튼ai에게 물어봐서 답을 제출하고 급하게급하게 
왜 이렇게 되는지 확인하는 중이다.

다른 사람 문제 풀이 보니 큐를 이용해서 푸는 방법에 아래와 같이 deque를 import 해주던데, 이거 어떤 식으로 쓰는지 
어떨 때 쓰는건지 확인해봐야겠다.
예전에 웹크롤링 파이썬으로 할 때도 아래와 같은 from -- import -- 뷰티??풀?뭐 있었는데 뷰티숲? 
이렇게 적고서는 뭔가 인터프리터 실행해 나갔는데, 참 나는 기초가 많이 부족한 것 같다.

from collections import deque

 

오늘 파일 저장 TreeView의 TopNode를 기준으로 현재 아이템의 위치를 찾는 알고리즘을 처음으로 생각해내서 
노드 간의 깊이를 integer로 반환하고 
for문을 이용해서 위와 같은 알고리즘을 구현한 함수를 호출해서 현재 아이템에 변수를 넣어서 
각 열마다 현재 노드의  깊이가 반환되니깐 case 구조를 이용해서 원하는 엑셀 위치에 값을 집어넣어서
저장할 수 있었다.

뭔가... 설렜다.. 제대로 된 알고리즘을 생각해낸 것 같아서...;;

 

하지만... 반대로 엑셀에 있는 데이터를 노드로 불러들이는 과정에서 로직을 어느정도 구현하다가
멈췄는데 내일 다시 마지막으로 시도해서 완성된 기능설계프로그램을 내 블로그에 올려놓아야겠다.

 

 

- 어떤 문제가 있었고, 나는 어떤 시도를 했는지

 

def solution(s):
    # s 문자열의 첫 글자 
    x = s[0:1] # 1번째 글자
    num = 0
    for i in s[i, len(s), 1] :
        if x == s[i:i+1] : 
            split(s[i:i+1])
            num += 1

    
    return num


나의 시도는... 우선 subString 하는 방법을 아니깐, 문자열 s의 첫 단어를 x에 저장하고
반복문을 돌리면서 x와 같은 문자가 나오면 문자열 분리하고 num 이라는 변수의 카운트를 1씩 증가 시킨다.

근데 아무래도,,, split 함수 사용이 미숙했던 것 같아.. 다른 방법이 있는 것 같은데 아래와 같이 에러가 발생했어요.


UnboundLocalError: local variable 'i' referenced before assignment
테스트 결과 (~˘▾˘)~
3개 중 0개 성공

- 어떻게 해결했는지

def solution(s):
    count = 0  # 분해된 문자열의 개수
    while s:  # s가 비어있지 않을 때까지 반복
        x = s[0]  # 첫 글자를 x로 설정
        x_count = 0  # x의 출현 횟수
        other_count = 0  # x가 아닌 다른 글자의 출현 횟수
        
        # 문자열을 읽어가면서 카운트
        for char in s:
            if char == x:
                x_count += 1
            else:
                other_count += 1
            
            # x_count와 other_count가 같아지는 순간
            if x_count == other_count:
                count += 1  # 분해된 문자열 개수 증가
                s = s[len(s) - len(s[:len(s) - (x_count + other_count)]):]  # 남은 문자열 업데이트
                break
        else:
            # 문자열을 다 읽고도 분해가 이루어지지 않은 경우
            count += 1  # 마지막으로 읽은 문자열도 분해됨
            break

    return count

 

코드 설명
초기화: count를 0으로 설정하여 분해된 문자열의 개수를 세기 시작합니다.
루프: 문자열 s가 비어있지 않을 때까지 반복합니다.
첫 글자 읽기: 첫 글자를 x로 설정하고, x_count와 other_count를 초기화합니다.
문자열 순회: 문자열을 순회하면서 x의 출현 횟수와 다른 글자의 출현 횟수를 각각 세어줍니다.
비교 및 분해: 두 횟수가 같아지면 분해된 문자열의 개수를 증가시키고, 남은 문자열을 업데이트합니다.
최종 분해 처리: 루프가 끝나고도 분해가 이루어지지 않은 경우에는 남은 문자열을 하나로 간주하고 count를 증가시킵니다.
결과 반환: 최종적으로 분해된 문자열의 개수를 반환합니다.
이 코드를 사용하면 주어진 문자열을 요구된 규칙에 따라 분해하고, 결과를 얻을 수 있습니다.

 


- 무엇을 새롭게 알았는지

1. while s : <- 이게 이해가 잘 되지않는다. s에 없이 없을 때가 false여서 값이 있는 동안에는 true여서 이런식으로 쓰는건가... 무튼 새롭게 알게되었다. 더 자세히 알아봐야겠다.

 

2. 내가 생각했던 것보다 변수를 더 많이 선언했다. x에 대해서도 x가 아닌 것에 대해서도 count는 추후 숫자 센 거 반환할려고 쓰고자했던 것이였는데, 좀 더 효율적인 면을 생각해야할 것 같다.

 

3. for char in s : 를 쓰고 s의 첫번째 문자였던 x와 같으면  x_count 증가 시키고  x와 다르면 other_count 증가시고! 
    간단한거였는데, 이렇게 쓸 생각을 못했다.
    요 부분까지만 해도 ... 왼쪽에서 오른쪽으로 한 단어씩 비교할 수 있다는 것을 마지막으로는 두 카운트를 비교해서 같아      지면 우리가 원했던 카운트를 증가시키는 것. 참고로 남은 문자열 업데이트 부분은 
    표로 정리해서 한눈에 어떤식으로 비교되는지 더 가시적으로 살펴봐야 할 것 같다.

- 내일 학습할 것은 무엇인지
내일은, 오늘 파이썬 제대로 정리 못한 부분까지 한꺼번에 정리할 예정이다.



2024.10.29 - [[공부&수업]/코딩테스트 연습] - 99클럽 코테 스터디 2일차 TIL + 오늘의 학습 키워드 : 문자열

 

99클럽 코테 스터디 2일차 TIL + 오늘의 학습 키워드 : 문자열

제목: 99클럽 코테 스터디 2일차 TIL + 오늘의 학습 키워드 : 문자열- 오늘의 학습 키워드 : 문자열- 공부한 내용 본인의 언어로 정리하기1.len()함수: len()함수는 주어진 객체의 길이나 크기를 반

exit9509.tistory.com

 

 

이전 공부 내용이 궁금하신 분은 저의 2일차 게시물을 확인해주세요!!

 

728x90
반응형

관련글 더보기