전체 글

전체 글

    햄버거 만들기→인덱스 갱신★★+뒤를 기준으로 슬라이싱 [-4: : ]

    다른 사람의 풀이 1 def solution(ingredient): answer = 0 index = 0 while index < len(ingredient)-3: # 재료가 4개가 필요하기에 index가 리스트 총 길이 -3일때까지만 반복한다. if ingredient[index] == 1: # 첫 재료가 빵일때만 if ingredient[index:index+4] == [1,2,3,1]: # 4개의 재료가 햄버거 재료 순서와 맞는지 비교 del ingredient[index:index+4] # 맞으면 해당 요소들 리스트에서 제거 index = index-3 # index를 -3 요소에서부터 다시 비교하도록 조정(시간을 줄이는 핵심포인트) answer += 1 # 햄버거 카운트 continue # 다음..

    오늘의 교훈 continue

    while문에서 살펴본 continue문을 for문에서도 사용할 수 있다. 즉 for문 안의 문장을 수행하는 도중에 continue문을 만나면 for문의 처음으로 돌아가게 된다

    옹알이2 -> 포함하고 있지않다면 if !(babb.contains(text+text))★★

    class Solution { public int solution(String[] babbling) { int cnt = 0; for (String babb : babbling) { for (String text : new String[]{"aya", "ye", "woo", "ma"}) { if (!babb.contains(text + text)) { babb = babb.replace(text, " "); } } babb = babb.strip(); if (babb.length() == 0) { cnt++; } } return cnt; } } ▶ 향상된 for문을 for (String text : new String[]{"aya", "ye", "woo", "ma"}) 이렇게도 쓸수 있다는 사실에 주의 ..

    기사단원의 무기→약수를 구하는 효율적인 알고리즘★★

    기사단원의 무기→약수를 구하는 효율적인 알고리즘★★

    100의 약수는 아래와 같다. 1, 2, 4, 5, 10, 20, 25, 50, 100. 1단계-약수 구하기 통상적(본능적)으로 다음과 같이 구한다. def divisor_v1(N): result=[] for i in range(1, N+1): if N % i==0: result.append(i) return result #N=100인 경우 출력결과는 아래와 같다. #[1, 2, 4, 5, 10, 20, 25, 50, 100] 2단계- 제곱근을 기준으로 약수 구하기 "N의 약수를 구할 때는, "1부터 N의 제곱근까지"의 수로 나누어 떨어지는지 확인하면 된다!" 즉 100의 제곱근인 10을 기준으로 좌측(작은 약수)와 우측(큰 약수)를 각각 구하고, 그 다음에 중복되는 요소를 제거해 주면 된다. 아래에서 ..