코딩테스트/programmers (python)

20240103/ programmers/ 0단계/ python

seulll 2024. 1. 3. 20:12

1. 코딩테스트 연습 - 5명씩 | 프로그래머스 스쿨 (programmers.co.kr)

2. 코딩테스트 연습 - ad 제거하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

문제 설명

문자열 배열 strArr가 주어집니다. 배열 내의 문자열 중 "ad"라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return 하는 solution 함수를 완성해 주세요.

 

나의 풀이 (테스트 에러)

def solution(strArr):
    for i in strArr:
        if "ad" in i:
            strArr.remove(i)
    return strArr

 

문제점

remove(i)는 리스트에서 i번째에 있는 값을 제거하는 동작을 함.
하지만 이를 for-in loop안에서 수행할 경우 정상적으로 모든 리스트를 순회하지 못할 수 있음.

 

재시도 (정답)

def solution(strArr):
    result=[]
    for i in strArr:
        if "ad" not in i:
            result.append(i)
    return result

 

3. 코딩테스트 연습 - 특별한 이차원 배열 2 | 프로그래머스 스쿨 (programmers.co.kr)

4. 코딩테스트 연습 - 접미사 배열 | 프로그래머스 스쿨 (programmers.co.kr)

5. 코딩테스트 연습 - 덧셈식 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)

6. 코딩테스트 연습 - l로 만들기 | 프로그래머스 스쿨 (programmers.co.kr)

7. 코딩테스트 연습 - 꼬리 문자열 | 프로그래머스 스쿨 (programmers.co.kr)

8. 코딩테스트 연습 - 문자열 바꿔서 찾기 | 프로그래머스 스쿨 (programmers.co.kr)

9. 코딩테스트 연습 - 문자 리스트를 문자열로 변환하기 | 프로그래머스 스쿨 (programmers.co.kr)

10. 코딩테스트 연습 - 외계행성의 나이 | 프로그래머스 스쿨 (programmers.co.kr)

11. 코딩테스트 연습 - 피자 나눠 먹기 (2) | 프로그래머스 스쿨 (programmers.co.kr)

 

문제설명

머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요

 

나의 풀이

.

 

모범답안

def solution(n):
    pizza = 6
    while pizza % n != 0:
        pizza +=6
    return pizza/6

 

12. 코딩테스트 연습 - 문자열 돌리기 | 프로그래머스 스쿨 (programmers.co.kr)

13. 코딩테스트 연습 - 주사위 게임 2 | 프로그래머스 스쿨 (programmers.co.kr)

 

문제설명

나의 풀이

.

모범답안

def solution(a, b, c):
    answer=a+b+c
    if a==b or b==c or a==c: answer*=a**2+b**2+c**2
    if a==b==c:answer*=a**3+b**3+c**3
    return answer
def solution(a, b, c):
    check=len(set([a,b,c]))
    if check==1:
        return 3*a*3*(a**2)*3*(a**3)
    elif check==2:
        return (a+b+c)*(a**2+b**2+c**2)
    else:
        return (a+b+c)

 ※ set 함수로 중복값 확인

 

14. 코딩테스트 연습 - 특별한 이차원 배열 1 | 프로그래머스 스쿨 (programmers.co.kr)

 

문제설명

정수 n이 매개변수로 주어질 때, 다음과 같은 n × n 크기의 이차원 배열 arr를 return 하는 solution 함수를 작성해 주세요

 

나의 풀이

이중 for문을 사용하여 시도 ->  2차원 배열로 분리 실패

 

모범답안

def solution(n):
    result=[[0]*n for i in range(n)]
    for i in range(n):
        result[i][i]=1
    return result

 

 

15. ★   코딩테스트 연습 - 합성수 찾기 | 프로그래머스 스쿨 (programmers.co.kr)

 

문제설명

약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.

 

 

나의 풀이

def solution(n):
    num = []
    count = 0
    for i in range(2,n+1):
        for j in range(1,i+1):
            if i % j == 0 :
                num.append(i)
        if num.count(i) >=3:
            count += 1
    return count

 

모범답안 (컴파일 시간 감소)

def solution(n):
    output = 0
    for i in range(4, n + 1):
        for j in range(2, int(i ** 0.5) + 1):
            if i % j == 0:
                output += 1
                break
    return output