아자아자 화이팅이닷 !

230805 오프라인 스터디 & 프로그래머스 문제풀기 & 미니강의 본문

TIL

230805 오프라인 스터디 & 프로그래머스 문제풀기 & 미니강의

유초23 2023. 8. 5. 23:53
728x90

* 1로 만들기 문제에서

 

나는

def solution(num_list):
    count = 0
    for i in range(len(num_list)):
        while num_list[i] != 1:
            if num_list[i] % 2 == 0:
                num_list[i] = num_list[i] / 2
                count += 1
            else:
                num_list[i] = (num_list[i] -1) / 2
                count +=1
    return count

 

이렇게 문제를 풀었는데, range(len(num_list))를 하지 않고도 그냥 for i in num_list를 해서도 간단하게 풀 수 있었다.

 

def solution(num_list):
    answer = 0

    for n in num_list:
        while n != 1:
            n //= 2
            answer += 1

    return answer

 

이런식으로 코드를 짜고 그냥 바로 n //= 2를 해서 모든값에 2로 나눈 몫을 구해준다음 count해주면 끝 !


* 한 번만 등장한 문자 문제에서

 

count()함수를 썼으면 빨리 해결이 됐을텐데 나는 if else문을 써서 문제를 해결했다 ,, 

 

count()함수는 '변수. count(찾는 요소)' 형태로 사용한다. 괄호( ) 안에 찾고자 하는 값을 입력하면 함수를 사용한 변수 안에서 해당 값의 개수를 숫자로 반환한다.

 

EX)

>>> 'ooyyy'.count('y')
3
>>> b = 'ox o x oxoxox'
>>> b.count('ox')
4
>>> a = [1, 1, 1, 2, 3]
>>> a.count(1)
3

>>> ['ox', 'o', 'x', 'oxoxox'].count('ox')
1

 

그래서 이 문제를 count()함수를 써서 해결하면

def solution(s):
    answer = "".join(sorted([ ch for ch in s if s.count(ch) == 1]))
    return answer

이렇게 간단한 코드가 나온다 !


오늘은 처음으로 스터디원들과 미니강의를 진행했는데, 내가 모르는 부분들도 잘 설명해주셔서 좋은 시간이었고

조금이나마 모르는 개념들을 배울 수 있어 좋았다.

 

다음에는 설명을 할 때 보충을 해야될 부분이 무엇일지 조금 더 생각해보면 좋을 것 같다 !


그래서 오늘은

이 로 케 ~~

하루하루 더 힘내보자고 ~~

화이팅 하자고 ~~

현생 이겨내자 ~!~ 화이탱 ~!~

728x90