728x90
반응형

 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

또 다시 9점짜리 문제를 만났다.

이것보다 더 정답율이 낮은 문제를 풀어도 1점만 주는 경우도 많은데, 9점이나 주는 기준이 뭔지 궁금하다.

 

 

내가 맞춘 정답 ::

 

def solution(str_list):
    answer = []
    
    for i in range(len(str_list)):
        if str_list[i]=='l' or str_list[i]=='r':
            break
    
    if str_list[i]=='l':
        answer = str_list[:i]
    elif str_list[i]=='r':
        answer = str_list[i+1:]
    
    return answer
728x90
반응형
728x90
반응형

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

 

프로그래머스

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

programmers.co.kr

 

 

 

기초 문제 중에서 4점짜리 문제는 오랜만이다.

 

 

내가 맞춘 정답 ::

 

def solution(n, slicer, num_list):
    answer = []
    
    a = slicer[0]
    b = slicer[1]
    c = slicer[2]
    
    if n==1:
        return num_list[0:b+1]
    elif n==2:
        return num_list[a:]
    elif n==3:
        return num_list[a:b+1]
    elif n==4:
        return [num_list[i] for i in range(a,b+1,c)]
728x90
반응형
728x90
반응형

한동안 기사시험을 준비하느라 프로그래머스에 안들어갔다가 이번에 다시 들어가봤는데, '코딩 기초 트레이닝' 이라는 항목이 생겼다. 보니까 아주 어려운 문제들은 아니라서 빨리 끝내버려서 점수나 올려야겠다.

 

맞춘 정답 ::

 

def solution(intStrs, k, s, l):
    answer = []
    
    for el in intStrs:
        el = el[s:s+l]
        if int(el) > k:
            answer.append(int(el))
    return answer

 

어렵지 않은 문제인데 아직 맞춘 사람이 적어서 그런지 3점이나 준다

개꿀

 

 

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

 

프로그래머스

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

programmers.co.kr

 

728x90
반응형
728x90
반응형

 

 

내가 작성한 정답 ::

 

def solution(n):
    answer = 0
    
    for i in range(1, n+1):
        answer += 1
        # print(answer)
        
        if answer%3==0:
            answer += 1
            if answer%10 == 3:
                answer += 1
            elif int((answer-100)/10) == 3:
                answer += 10
        elif int(answer/10) == 3:
            answer += 10
        
        elif answer%10==3:
            answer += 1
            if answer%3==0:
                answer += 1
        
            
        # print(answer)
        # print()

    return answer

 

잘못 작성한 답 (1) ::

 

def solution(n):
    answer = 0
    # 3의 배수는 제외한다
    # 3이 들어간 숫자도 제외한다
    town = [a for a in range(1,150)]
    
    for i in range(n):
        answer += 1
        
        
        
        if town[i]%10 == 3:
            answer += 1
        elif town[i] %3 == 0:
            answer += 1

    return answer

 

잘못 작성한 답 (2) ::

 

정답율이 81.8%  달성한 답이다. 테스트케이스 4와 5 두개가 실패하였다.

def solution(n):
    answer = 0
    
    for i in range(1, n+1):
        answer += 1
        # print(answer)
        
        if answer%3==0:
            answer += 1
            if answer%10 == 3:
                answer += 1
        elif int(answer/10) == 3:
            answer += 10
        elif answer%10==3:
            answer += 1
            if answer%3==0:
                answer += 1
            
        # print(answer)
        # print()

    return answer

 

 

 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

 

 

 

 

728x90
반응형
728x90
반응형

 

내가 작성한 정답 ::

 

참 오래 돌아왔다. 정말 다양한 방법으로 틀렸었는데, 전부 지워버리는 바람에 남아있는 것이 없다.

 

최대공약수를 구하는 함수를 따로 작성하기 귀찮아서 그냥 math 라이브러리에서 메서드를 가져와서, 우선 분수를 기약분수로 만들어주었다. 그리고는 분모의 인수가 2 또는 5로만 이루어져있는지를 체크하기 위해서 찾는 while 문을 작성했다. 참 쉬운 문제고 짧은 코드였지만 정말 오래 고민해야했다.

 

import math

def solution(a, b):
    answer = 0
    
    c = math.gcd(a,b)
    if c!=1:
        a = int(a/c)
        b = int(b/c)
    
    while b>1:
        if b%2==0:
            b = int(b/2)
        elif b%5==0:
            b = int(b/5)
        else:
            b = 0
            answer = 2
    
    if b == 1:
        answer = 1
    else :
        answer = 2
    
    
    return answer

 

https://school.programmers.co.kr/learn/courses/30/lessons/120878?language=python3# 

 

프로그래머스

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

programmers.co.kr

 

 

 

 

 

728x90
반응형
728x90
반응형

오래동안 앓던 이가 빠진 느낌이다. 정말 오랫동안 방치해놨었다. 단 한개의 테스트 케이스 때문에.

결국에는 예외 처리를 해서 끝냈다.

 

 

내가 작성한 정답 ::

테스트케이스 8번이 계속 문제였는데, 8번은 보드의 사이즈를 제대로 고려하지 않아서 생긴 문제였다. 

 

def solution(keyinput, board):
    
    xCo = 0
    yCo = 0
    xSize = int((board[0] -1) / 2)
    ySize = int((board[1] -1) / 2)
    
    print(xSize, ySize)
    
    
    for inp in keyinput:
        if inp=="left":
            if abs(xCo) < xSize :
                xCo -= 1
            elif xCo == xSize :
                xCo -= 1
        elif inp=="right":
            if abs(xCo) < xSize :
                xCo += 1
            elif xCo == xSize * (-1):
                xCo += 1
        elif inp=="down":
            if abs(yCo) < ySize :
                yCo -= 1
            elif yCo == ySize :
                yCo -= 1
        elif inp=="up":
            if abs(yCo) < ySize :
                yCo += 1
            elif yCo == ySize * (-1):
                yCo += 1

    
    
    
    answer = [xCo, yCo]
    return answer

 

잘못 작성한 답 (1) ::

 

def solution(keyinput, board):
    answer = []
    
    xCo = 0
    xCoMax = (board[0] - 1)/2
    yCo = 0
    yCoMax = (board[1] - 1)/2
    
    for command in keyinput:
        if command == 'left':
            if abs(xCo) < abs(xCoMax):
                xCo -= 1
        elif command == 'right':
            if abs(xCo) < abs(xCoMax):
                xCo += 1
        elif command == 'up':
            if abs(yCo) < abs(yCoMax):
                yCo += 1
        elif command == 'down':
            if abs(yCo) < abs(yCoMax):
                yCo -= 1
    answer.append(xCo)
    answer.append(yCo)
    
    return answer

 

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

 

프로그래머스

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

programmers.co.kr

 

728x90
반응형
728x90
반응형

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

 

프로그래머스

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

programmers.co.kr

 

 

내가 맞힌 정답::

 

def solution(numer1, denom1, numer2, denom2):
    answer = []
    
    denom3 = LCM(denom1, denom2)
    numer3 = numer1 * ()
    
    answer1 = numer1*(denom3//denom1) + numer2*(denom3//denom2)
    answer2 = denom3
    
    if GCD(answer1, answer2) == 1:
        answer.append(answer1)
        answer.append(answer2)
    else :
        answer3 = GCD(answer1,answer2)
        answer1 = answer1//answer3
        answer2 = answer2//answer3
        answer.append(answer1)
        answer.append(answer2)
    
    
    return answer

def GCD(a, b):
    while (b):
        a,b = b, a%b
    return a
    
def LCM(a, b):
    return (a*b) // GCD(a,b)

 

 

 

 

 

 

728x90
반응형
728x90
반응형

 

 

내가 맞힌 정답::

def solution(a, b):
    answer = ''
    totday = -1
    remday = 0
    
    days = {1:31, 2:29, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31}
    
    #if a != 1:
    if a>1:
        for i in range(1, a):
            totday += days[i]
        totday += b
    elif a == 1:
        totday += b

    
    remday = totday%7
    
    if remday == 4:
        answer = 'TUE'
    elif remday == 5:
        answer = 'WED'
    elif remday == 6:
        answer = 'THU'
    elif remday == 0:
        answer = 'FRI'
    elif remday == 1:
        answer = 'SAT'
    elif remday == 2:
        answer = 'SUN'
    elif remday == 3:
        answer = 'MON'
    
    print(totday)
    
    return answer

 

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

 

프로그래머스

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

programmers.co.kr

 

 

728x90
반응형
728x90
반응형

 

 

 

 

 

내가 맞힌 정답::

# def gcd(x, y):
# def lcm(x, y):

import math
    
def solution(n, m):
    answer = []
    
    # answer.append(math.gcd(n,m))
    # answer.append(math.lcm(n,m))
    
    # print(n)
    # print(m)
    # print(math.gcd(n,m))

    answer.append(math.gcd(n,m))
    answer.append(n*m/math.gcd(n,m))
    
    return answer

https://school.programmers.co.kr/learn/courses/30/lessons/12940?language=python3 

 

프로그래머스

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

programmers.co.kr

 

728x90
반응형
728x90
반응형

예외 케이스를 혼자 힘으로 찾는다는 것은 정말 힘들지만 뿌듯한 일이다. 하마터면 못풀뻔했는데, 움직이지 않아도 되는 예외 케이스를 생각해보았다.

 

A가 "hello"이고, B 역시ㅣ "hello" 일 경우에, 움직이지 않아도 되기 때문에 답은 0이어야하지만, 실제로는 5번 움직여서 5로 답이 출력되는 것을 알 수 있었다. 그래서 답이 문자열의 길이와 같을 경우 0을 출력하도록 바꿨더니 정답이었다.

 

내가 맞힌 정답::

def solution(A, B):
    answer = 0
    
    n = len(A)
    
    for i in range(n):
        temp = ''
        temp = temp + A[-(i+1):] + A[:((n-1)-i)]
        print(temp)
        
        if temp == B:
            answer = i+1
            if answer == n:
                answer = 0
            break
        else :
            answer = -1
    
    return answer

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

 

프로그래머스

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

programmers.co.kr

 

728x90
반응형

+ Recent posts