728x90
반응형

코딩테스트 연습 > 코딩테스트 입문 > 한 번만 등장한 문자

 

이제는 이런 문제는 쉽게 풀 수 있다. 다만 한가지 문제가 있다면, 꼭 한두가지 케이스들이 Fail이 뜨는 경우들이 있는데, 이 부분에 대해서는 뻔한 예외들이 존재한다. 이 문제에도 딱 하나의 Fail이 존재했었는데, 먼저 생각이 들었던 것은 입력의 값이 길이가 1인 경우였다. 그렇게 바꿨더니 다행히 한번에 답이 구해졌다.

 

 

내가 맞힌 정답::

def solution(s):
    answer = ''
    
    tmp = list(s)
    tmp.sort()
    tmp2 = tmp + tmp
    
    if len(s) == 1:
        answer = s
    else:
        for i in range(len(tmp)):
            if (tmp.count(tmp[i]) == 1) and (tmp2[i] != tmp2[i+1]):
                answer += tmp[i]
    
    return answer

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

 

프로그래머스

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

programmers.co.kr

 

728x90
반응형
728x90
반응형

 

정답율 67%를 기록한 문제이다.

 

 

 

내가 맞힌 정답::

def solution(score):
    answer = []
    temp = []
    for arr in score:
        temp.append(int((arr[0] + arr[1]) /2))
    print(temp)
    for i in temp:
        b = 0
        for j in temp:
            if j > i:
                b += 1
        answer.append(b+1)
    
    return answer

아쉽게 틀린 정답::

거의 맞았다고 생각했는데, 테스트 케이스에서 두개가 틀렸다.

def solution(score):
    answer = []
    temp = []
    for arr in score:
        temp.append(int((arr[0] + arr[1]) /2))
    print(temp)
    for i in temp:
        b = 0
        for j in temp:
            if j > i:
                b += 1
        answer.append(b+1)
    
    return answer

 

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

 

프로그래머스

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

programmers.co.kr

 

728x90
반응형
728x90
반응형

 

 

 

내가 맞힌 정답::

def factorial(n):
    if n < 2:
        return 1
    else:
        return n * factorial(n-1)
    
def solution(balls, share):
    answer = 0
    answer = factorial(balls) / (factorial(balls - share) * factorial(share))
    
    return answer
728x90
반응형
728x90
반응형

 

 

 

 

 

내가 맞힌 정답::

def solution(num, k):
    answer = 0

    temp = str(num)
    
    for i in range(len(temp)):
        
        if int(temp[i]) == k:
            answer = i+1
            break
        else:
            answer = -1
    
    return answer

아쉽게 틀린 정답::

def solution(num, k):
    answer = 0
    
    strnum = str(num)
    
    for i in range(len(strnum)):
        if strnum[i]==k:
            answer = i+1
            break
        else:
            answer = -1
    

    return answer

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

 

프로그래머스

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

programmers.co.kr

 

728x90
반응형
728x90
반응형

오랜만에 5점짜리 문제였다. 정답율은 68%. 아주 어려운 문제는 아니라서, 잠깐 고민해보고 풀어봄직한 문제이다.

이중 배열이라는 단어만 들으면 약간 당황할법 하지만, 그래봤자 0레벨 문제다.

 

 

 

내가 맞힌 정답::

def solution(id_pw, db):
    answer = ''
    
    idf = id_pw[0]
    pwd = id_pw[1]
    
    nums = len(db)
    
    for account in db:
        if idf == account[0]:
            if pwd == account[1]:
                answer = 'login'
            else :
                answer = 'wrong pw'
            break
        else :
            answer = 'fail'

    return answer

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

 

728x90
반응형
728x90
반응형

처음부터 맞은건 아니었지만, 문제를 푸는데 그렇게 오래 걸리지는 않았다.

 

다만 문제가 있었다면, 두번째 케이스에서 불필요한 공백이 하나가 추가가 되었다는 점이다. 이를 해결하기 위해서, 끝에 if 조건문을 하나 더 주어서 길이가 필요한 마디의 총 길이보다 길 경우에 이를 추가하도록 하였다.

 

 

내가 맞힌 정답::

def solution(my_str, n):
    answer = []
    
    a = len(my_str)
    b = int(a/n)
    print(a)
    print(b)
    
    for i in range(b):
        temp = ''
        temp += my_str[i*n:i*n + n]
        answer.append(temp)
    
    if a > n*b:
        answer.append(my_str[b*n:])
    
    return answer

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

 

프로그래머스

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

programmers.co.kr

 

728x90
반응형
728x90
반응형

코테 문제를 풀면서, 한번에 맞히는 경우는 잘 없다. 이 문제 같은 경우에도 그렇게 코드가 깔끔하지는 않은데, 다행히 한번에 코드가 돌기만 해도 감사했던 것이 정답이어서 기분이 좋았다.

 

 

내가 맞힌 정답::

def solution(numbers):
    answer = 0
    temp = ''
    idx = 0
    leng = len(numbers)
    while idx < leng:
        if numbers[idx] == 'z':
            temp += '0'
            idx += 4
        elif numbers[idx] == 'o':
            temp += '1'
            idx += 3
        elif numbers[idx] == 'e':
            temp += '8'
            idx += 5
        elif numbers[idx] == 'n':
            temp += '9'
            idx += 4
        elif numbers[idx] == 't':
            if numbers[idx+1] == 'w':
                temp += '2'
                idx += 3
            elif numbers[idx+1] == 'h':
                temp += '3'
                idx += 5
        elif numbers[idx] == 'f':
            if numbers[idx+1] == 'o':
                temp += '4'
                idx += 4
            elif numbers[idx+1] == 'i':
                temp += '5'
                idx += 4
        elif numbers[idx] == 's':
            if numbers[idx+1] == 'i':
                temp += '6'
                idx += 3
            elif numbers[idx+1] == 'e':
                temp += '7'
                idx += 5
    print(temp)
    
    answer = int(temp)
    '''
    ze q
    
    on q
    
    tw q
    th q
    
    fo q
    fi q
    
    si q
    se q

    ei q
    
    ni q
    '''
    
    return answer

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

 

프로그래머스

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

programmers.co.kr

 

728x90
반응형
728x90
반응형

코드를 짧게 써서 답을 맞추면 짜릿하다. 원형 어레이처럼 보이지만, 그냥 선형 배열을 여러개 놓고, 인덱스를 쉽게 놓았더니 한번에 정답이 되었다. 정답률도 77% 이어서 점수 +2 개꿀

 

내가 맞힌 정답::

def solution(numbers, k):
    answer = 0
    
    number = numbers * k
    answer = number[2*(k-1)]
    
    return answer

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

 

프로그래머스

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

programmers.co.kr

 

728x90
반응형
728x90
반응형

 

 

내가 맞힌 정답::

def solution(cipher, code):
    answer = ''
    
    for i in range(1,(int(len(cipher)/code)+1)):
        answer += cipher[(code*i)-1]
    
    return answer

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

 

프로그래머스

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

programmers.co.kr

 

728x90
반응형
728x90
반응형

처음에는, 작은 수만 예외로 처리하고, 범위를 주어진 수의 절반까지의 범위로 했었는데, 이게 잘못된 접근이었다. 주어진 문제의 숫자의 범위가, 1,000,000이었기 때문에 자칫하면 루프가 50만번 돌 수도 있었다.

 

근데, 매개변수의 제한조건이 백만이니까, 최대 제곱수가 1000일거라는 생각이 들어 루프의 범위를 줄이고 다시 돌려봤더니 금새 문제가 풀렸다.

 

내가 맞힌 정답::

def solution(n):
    answer = 0
    
    for i in range(1,1001):
        if n == i*i:
            answer = 1
            break
        else:
            answer = 2
    
    return answer

잘못 작성한 답 (1, 2)

def root(n):
    rootN = int(n/2)
    for i in range(2,rootN):
        if n//rootN == rootN:
            return rootN
        else :
            return False


def solution(n):
    answer = 0
    print(root(8))
    print(root(9))
    
    if root(n):
        answer = 1
    else:
        answer = 2
    
    return answer
728x90
반응형

+ Recent posts