본 캠프 TIL

3월 14일 TIL 코드카타, 최종 프로젝트 준비

meoca1257 2025. 3. 14. 20:58

[특강] 최종 프로젝트를 준비하며 1회차 - 김연준 튜터님

[수업 목표]

  • 공공데이터 수집, Kaggle 활용법, 논문 검색 및 활용, 그리고 데이터 공모전 참여 전략을 다루며, 데이터 분석 및 AI 모델 개발에 필요한 실용적인 정보를 제공합니다.
  • 다양한 공공데이터 포털과 Kaggle을 활용한 데이터 분석법을 설명하고, 연구 논문의 등급과 검색 방법을 소개하며, 공모전에서 성과를 극대화하는 전략을 제시합니다.
  • 이를 통해 데이터 기반 연구 및 프로젝트 수행에 필요한 핵심 역량을 효과적으로 기를 수 있습니다.

[목차]

  1. 튜터 소개
  2. 공공데이터 수집
  3. 캐글 탐색법
  4. 논문 활용법
  5. 공모전 참여전략

 

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

코드카타

코딩테스트 연습 - 문자열 나누기 | 프로그래머스 스쿨

 

처음엔 

def solution(s):
    count = 1
    for i in range(len(s)):
        if s[i] == s[i+1]:
            count += 1
        if s[i] != s[i+1] and count > 1:
           
           

solution("aaabbaccccabba")

이런식으로 맞춰 나가려고 했는데 

문제점 2개 발생

1. 이 경우 aaa bbb 의 경우엔 문제가 없는데 aaa bb a cc 의 경우를 한 묶음으로 묶을 수 없음

2. 식이 너무 복잡해지고 변수도 count 말고 1개를 더 만들어야함

 

in 을 쓰는 것도 안됨 

음 순서대로 unique한 값들만 뽑아서 바로 쪼개면 aaa bb a cc 같은 경우를 읽지 못하니 안되겠고

그렇다고 unique한 값들만 뽑아서 다음 unique한 값이 나올때 in을 기준 두면 식이 복잡해지고

 

일단 첫번째 값을 뽑아서 변수 1로 지정하고 계산식 풀고 마지막에 count 초기화,  그리고 aaa bb a cc 대비용 if 문 추가

 

def solution(s):
    count1 = 0
    count2 = 0
    result = 0
    for i in range(len(s)):
        if s[i] == s[i+1]:
            count1 += 1
        else:
            count1 += 1
            count2 -= 1
        if count1 + count2 == 0:
            count1 = 0
            count2 = 0
            result += 1
    return result

solution("aaabbaccccabba")

이런식으로 바꿔봄 

 

근데

s[i+1] 은 범위를 초과해버려서 식이 정상적으로 성립하지 않음

-> 첫번째 문자 기준으로 count를 세는 방식으로 수정해야함

 

count2 가 -1이 되게해서 0을 만들기보단 count2 를 +1 해서 count1과 count2 가 같을 때를 구하는게 굿

 

def solution(s):
    count1 = 0  # 기준 문자 개수
    count2 = 0  # 다른 문자 개수
    result = 0
    first_char = ""  # 기준 문자

    for i in range(len(s)):
        if count1 == 0:  # 새로운 기준 문자 설정
            first_char = s[i]
       
        if s[i] == first_char:
            count1 += 1
        else:
            count2 += 1
       
        if count1 == count2:  # 균형이 맞으면 분할
            result += 1
            count1 = 0
            count2 = 0

    return result + (1 if count1 > 0 else 0)  # 남은 문자열이 있으면 추가

solution("aaabbaccccabba")  #3

지삡삐의 헬프 

정답

 

지삡삐 쓰면 확실히 혈이 뚫리긴 하는데 반만 뚫려서 다시 막히는 느낌이남 

최대한 지삡삐 원조를 구하지 말자

 

 

코딩테스트 연습 - 대충 만든 자판 | 프로그래머스 스쿨

def solution(keymap, targets):
    answer = []
   
    for i in range(len(targets)):
        for j in range(len(targets[i])):
            if j in keymap:
               
    return answer


solution(["ABACD", "BCEFD"],["ABCD","AABB"])

문제점

2중 for문 쓰면 연산량이 너무 늘어남 

이런식으로 나아가면 식이 너무 복잡해짐

 

해결책 - enumerate 함수 쓰자 

 

 

리스트 a에서 특정 정수 x가 있는 모든 인덱스를 출력하는 함수는

enumerate()리스트 컴프리헨션을 사용하면 간단하게 구현할 수 있어!

 

def find_indices(a, x):
    return [i for i, val in enumerate(a) if val == x]

 

a = [3, 5, 2, 5, 8, 5, 10]
x = 5
print(find_indices(a, x))  # ➝ [1, 3, 5]

 

 

 

 

 

일단 enumerate 함수 써야겠다

 

머리가 녹을 것 같아서 지삡삐 씀

 

def solution(keymap, targets):
    result = []
    
    for target in targets:      
        total_presses = 0  # 총 눌러야 하는 횟수
        for char in target:
            min_presses = float('inf')  # 최소 횟수 초기화
            for key in keymap:
                if char in key:
                    min_presses = min(min_presses, key.index(char) + 1)  # 최소 인덱스 + 1
            
            if min_presses == float('inf'):  # 해당 문자가 keymap에 없음
                total_presses = -1
                break
            
            total_presses += min_presses  # 최소 횟수를 누적
        
        result.append(total_presses)
    
    return result

 

겁나 어렵네 ㅡㅡ

복습 필요!!!!!!!!!!!!

 

인강이나 듣자 ㅇ.. 

'본 캠프 TIL' 카테고리의 다른 글

3월 18일 TIL  (0) 2025.03.18
3월17일 TIL 코드카타 .. +  (0) 2025.03.17
3월13일 TIL  (0) 2025.03.13
3월12일 TIL 코드카타  (0) 2025.03.12
3월 11일 TIL 팀 프로젝트 완  (0) 2025.03.11