728x90
반응형

정답율이 그렇게 낮지도 않은데 무려 6점! 기분이 매우 좋다.

 

내가 맞힌 정답 + 잘못 푼 정답 :: 

처음에 재귀로 풀려고 했는데, 자꾸 시간초과 에러가 났다. 그래서 for문으로 풀었다.

이렇게 하니까 더 쉽게 푼 것처럼 보인다.

'''def fib(n):
    if n == 0:
        return 0
    elif n == 1 or n==2:
        return 1
    else:
        return (fib(n-2) + fib(n-1)) % 1234567
'''

def solution(n):
    answer = 0    
    # answer = fib(n)
    a = 0
    b = 1

    for i in range(n-1):
        c = a + b
        a = b
        b = c
    answer = c % 1234567
    
    return answer

https://school.programmers.co.kr/learn/courses/30/lessons/12945

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

728x90
반응형
728x90
반응형

리스트의 크기의 순서를 정렬하기 위한 리스트를 하나를 추가로 생성한다.

그리고 인덱싱을 편하게 하기 위해서 범위의 숫자인 100보다 큰 수 한개를 더 추가를 해둔다. 그런 뒤에 역순으로 sort를 하고 인덱싱으로 리스트에 값을 순서대로 추가해준다.

 

 

내가 맞힌 정답::

def solution(emergency):
    answer = []
    sort_emergency = []
    
    for el in emergency:
        sort_emergency.append(el)
    sort_emergency.append(1000)
    sort_emergency.sort(reverse=True)
    
    for el in emergency:
        answer.append(sort_emergency.index(el))
    
    return answer

https://school.programmers.co.kr/learn/courses/30/lessons/120835

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

728x90
반응형
728x90
반응형

처음에 문제를 너무 어렵게 생각했나보다. 다시 차분하게 풀어보니까 이중 for문으로 생각보다 쉽게 풀렸다. 

 

내가 맞힌 정답::

def solution(n):
    answer = 0
    
    for i in range(1,n+1):
        yak = 0
        for j in range(1, i+1):
            if i%j == 0:
                yak += 1
        if yak > 2:
                answer += 1
            
    return answer

잘못 작성한 답 (1) (정답율 33%):: 

def isPrime(n):
    num = 0
    for i in range(2,n):
        if n//i == 0:
            num += 1
    if num == 1:
        return True
    else :
        return False

def solution(n):
    answer = 0
    tmp_list = []
    
    print(isPrime(3))
    print(isPrime(4))

    
    
    answer = len(tmp_list)
    
    return answer

 

https://school.programmers.co.kr/learn/courses/30/lessons/120846

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

728x90
반응형
728x90
반응형

EZ. 왜 이걸 여태 안풀었지..?

 

내가 맞힌 정답::

def solution(order):
    answer = 0
    
    a = str(order)
    for _ in a:
        if _ == '3':
            answer += 1
        elif _ == '6':
            answer += 1
        elif _ == '9':
            answer += 1
    
    return answer

https://school.programmers.co.kr/learn/courses/30/lessons/120891

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

728x90
반응형
728x90
반응형

코딩테스트 연습 > 코딩테스트 입문 > 다음에 올 숫자

 

정답율이 57%이다. 그정도 문제인지는 잘 모르겠다. 아마 파이썬으로 풀었을 때 코드적으로 쉽게 접근할 수 있는 부분이 있어서 그런지도 모르겠다.

 

 

 

내가 맞힌 정답::

def solution(common):
    answer = 0
    
    if (common[1] - common[0]) == (common[2] - common[1]):
        answer = common[-1] + (common[1] - common[0])
    elif (common[1] / common[0]) == (common[2] / common[1]):
        answer = common[-1] * (common[1] / common[0])
    
    return answer

https://school.programmers.co.kr/learn/courses/30/lessons/120924#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

728x90
반응형
728x90
반응형

코딩테스트 연습 > 코딩테스트 입문 > 숨어있는 숫자의 덧셈 (2)

 

정답율은 77%이지만, 문제 해결에 성공한 사람의 숫자는 그렇게 많지 않다.

 

 

 

내가 맞힌 정답::

 

.

 

잘못 작성한 답 (1) ::

이 코드는, 10개의 테스트 케이스 중에는 9개가 맞다. 근데 딱 한개가 맞지 않는데, 그게 뭔지 도저히 모르겠다.

한글자인 경우, 두글자인 경우, 숨어있는 숫자가 없는 경우, 숫자만 존재하는 경우를 따로 추가를 해봐서 테스트를 해봤는데, 전부 통과했다.

def solution(my_string):
    answer = 0
    idx = 0
    b = list(my_string)
    d = ['a', 'a', 'a', 'a', 'a', 'a']
    c = len(b)
    b2 = b + d
    l = len(b)
    
    print(b)
    if c == 1:
        if my_string.isdigit() == True:
            answer += int(my_string)
    elif c == 2:
        if (my_string[0].isdigit() == True) and (my_string[1].isdigit() == True):
            answer += int(my_string)
        elif (my_string[0].isdigit() == True) and (my_string[1].isdigit() == False):
            answer += int(my_string[0])
        elif (my_string[0].isdigit() == False) and (my_string[1].isdigit() == True):
            answer += int(my_string[1])
    
    else:
        while idx < l:
            if b[idx].isdigit() == False:
                idx += 1
                continue
            elif b[idx].isdigit() == True:
                if b[idx+1].isdigit() == False:
                    answer += int(b[idx])
                    idx += 1
                elif b[idx+1].isdigit() == True:
                    if b[idx+2].isdigit() == False:
                        answer += int(b[idx])*10 + int(b[idx+1])
                        idx += 2
                    elif b[idx+2].isdigit() == True:
                        answer += int(b[idx])*100 + int(b[idx+1])*10 + int(b[idx+2])
                        idx += 3

                
    return answer

https://school.programmers.co.kr/learn/courses/30/lessons/120864#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

728x90
반응형
728x90
반응형

코딩테스트 연습 > 코딩테스트 입문 > 컨트롤 제트

 

 

.lstrip('-').isdigit()

 

 

내가 맞힌 정답::

Z 라는 문자가 나오면, 바로 이전에 있던 인덱스의 수를 덧셈에 포함시키지 않는 문제였다. 가볍게 인덱스로 매핑 해주고 정수로 구분되는 것은 모두 더해준 뒤에, Z 문자가 나왔을 경우에 이전 인덱스를 다시 뺄셈을 해주는 방식을 사용하였다.

 

그런데 문제는 음의 정수였다. 음의 정수는 isdigit() 메소드에서 정수로 인식을 못해서 answer 변수에 덧셈이 성립이 되지 않았다. 그래서 사용한 것이 .lstrip('-').isdigit() 이었다. 이걸 사용하면 음의 정수도 인식을 할 수 있게 되었다. 이거 넣었더니 바로 답이 나왔다.

def solution(s):
    answer = 0
    t = list(map(str,s.split(" ")))
    #print(t)
    n = len(t)
    t2 = t + t
    idx = 0
    
    for i in range(n):
        if t[i].lstrip('-').isdigit() == True:
            answer += int(t[i])
        elif t[i] == 'Z':
            answer -= int(t[i-1])
    
    return answer

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/120853#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

728x90
반응형
728x90
반응형

코딩테스트 연습 > 코딩테스트 입문 > 치킨 쿠폰

 

정답율이 60%대였다. 딱 보면 그렇게 어려운 문제는 아니지만, 어느 부분이 틀렸는지 확인하느라 고치는데 한참이 걸렸다. 

역시 오늘도 느낀건, 문제를 풀기전에 제시된 지시문을 천천히 잘 읽어야한다는 것이다.

근데, 다 풀고나니 6점이나 받아서, 약간은 뿌듯했다.

 

내가 맞힌 정답 ::

여기 서비스로 받은 치킨도 쿠폰을 주는 말도 안 되는 치킨집이 있다. 이거 떄문에 고치느라 한참이 걸렸다...

def solution(chicken):
    answer = 0
    service = 0
    coupons = chicken
    
    while coupons >= 10:
        service = coupons // 10
        answer += service
        coupons = (coupons % 10) + service
        print(coupons)
        
    # answer = service
    
    return answer

잘못 작성한 답 (1, 2) ::

    # while coupons >= 10:
    #     print(coupons)
    #     service = int(chicken/10)
    #     coupons -= service * 10
    #     print(service)
    #     #coupons += service
    #     print(coupons)
    
    
    
    
#     while chicken >= 10:
#         chicken = int(chicken/10)
#         service += chicken
#         print(int(chicken))
#         print(int(service))
#         print()

 

https://school.programmers.co.kr/learn/courses/30/lessons/120884

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

728x90
반응형
728x90
반응형

코딩테스트 연습 > 코딩테스트 입문 > 2차원으로 만들기

 

그냥 직관적으로, 생각나는대로 풀었더니 다행히 맞았다.

 

 

내가 맞힌 정답::

나눠야하는 배열의 숫자로 나누고, 임시 리스트에 첫번째 숫자를 넣어주고 기존의 리스트에 있는 수를 삭제했다.

n이라는 숫자만큼 차면 answer 리스트에 답을 넣어주고, 들어간 리스트는 공백으로 초기화시켜준다.

def solution(num_list, n):
    answer = []
    times = int(len(num_list) / n)
    
    for i in range(times):
        templist = []
        for j in range(n):
            templist.append(num_list[0])
            num_list.remove(num_list[0])
        answer.append(templist)

    return answer

https://school.programmers.co.kr/learn/courses/30/lessons/120842

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

728x90
반응형
728x90
반응형

규칙성을 찾느라 한참이 걸렸다. 평소에도 머릿속으로 자주 고민하던 생각들이랑 결이 비슷해서, 다행히 이 규칙성을 찾는데 그렇게 오래걸리지 않았다.

 

 

 

내가 맞힌 정답::

def solution(num, total):
    answer = []
    
    if total >= 0:
        mid = int(total/num)
    else:
        mid =int(total/num) - 1
    
    if num%2 == 1:
        halfn = int(num/2)
        for i in range((mid-halfn), (mid+halfn+1)):
            answer.append(i)
        #elif num%2 == 0:
    else:
        halfn = int(num/2)
        print(halfn)
        print(mid)
        for i in range((mid-int(halfn)+1), (mid+halfn+1)):
            answer.append(i)
    
    return answer

https://school.programmers.co.kr/learn/courses/30/lessons/120923#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

728x90
반응형

+ Recent posts