20240106/ programmers/ 0단계/ python

2024. 1. 5. 17:22·코딩테스트/programmers (python)

1. 코딩테스트 연습 - 세 개의 구분자 | 프로그래머스 스쿨 (programmers.co.kr)

문제 설명

임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다.

예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"] 가 됩니다.

문자열 myStr이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 ["EMPTY"]를 return 합니다.

 

나의 풀이

.

 

모범 답안

def solution(myStr):
    result=[]
    for i in ["a", "b", "c"]:
        myStr=myStr.replace(i, ' ')
    result=myStr.split()
    if not result:
        result=["EMPTY"]
    return result

a, b, c를 공백으로 대체해 공백을 기준으로 분리

 

2. 코딩테스트 연습 - 문자열 반복해서 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)

3. 코딩테스트 연습 - 수열과 구간 쿼리 4 | 프로그래머스 스쿨 (programmers.co.kr)

나의 풀이

def solution(arr, queries):
    for i in range(len(queries)): 
        for j in range(queries[i][0], queries[i][1]+1): 
            if j%queries[i][2]==0:
                arr[j]+=1
    return arr

 

풀이 참고

def solution(arr, queries):
    for s, e, k in queries:
        for i in range(s, e+1):
            if i%k == 0:
                arr[i] += 1
    return arr

 

4. 코딩테스트 연습 - 2의 영역 | 프로그래머스 스쿨 (programmers.co.kr)

문제 설명

정수 배열 arr가 주어집니다. 배열 안의 2가 모두 포함된 가장 작은 연속된 부분 배열을 return 하는 solution 함수를 완성해 주세요.

단, arr에 2가 없는 경우 [-1]을 return 합니다

 

나의 풀이 (테스트 4 실패)

def solution(arr):
    arr1="".join(map(str, arr))
    if "2" not in arr1:
        return [-1]
    return arr[arr1.find("2"):arr1.rfind("2")+1]

arr를 문자열로 바꾸어 find()를 사용해 첫 번째와 마지막에 나오는 2의 인덱스 값으로 접근하려고 했으나 실패

=> 문자열로 변환시 10이상의 수에 의해 인덱스 반환값에 오류 발

 

모범 답안

ef solution(arr):
    if 2 not in arr:
        return [-1]
    return arr[arr.index(2) : len(arr) - arr[::-1].index(2)]

★ 리스트 뒤에서 접근하는 법 숙지하기 list[::-1].index() 

 

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

 

문제 설명

문자열 배열 strArr이 주어집니다. strArr의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요

 

나의 풀이 (시간초과)

def solution(strArr):
    result=[]
    num = [len(i) for i in strArr]
    for i in num:
        result.append(num.count(i))
    return max(result)

 

모범 답안

def solution(strArr):
    result=[]
    num = [len(i) for i in strArr]
    for i in set(num):
        result.append(num.count(i))
    return max(result)
def solution(strArr):
    a=[0]*31
    for x in strArr: 
        a[len(x)]+=1
    return max(a)

★ set 함수 사용해 효율성 높임

 

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

7. 코딩테스트 연습 - 이진수 더하기 | 프로그래머스 스쿨 (programmers.co.kr)

문제 설명

이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요

 

나의 풀이

 

.

모범 답안

def solution(bin1, bin2):
    num1=int(bin1, 2)
    num2=int(bin2, 2)
    result=bin(num1+num2)
    return result[2:]

 

8. 코딩테스트 연습 - 커피 심부름 | 프로그래머스 스쿨 (programmers.co.kr)

9. 코딩테스트 연습 - qr code | 프로그래머스 스쿨 (programmers.co.kr)

10. 코딩테스트 연습 - 조건에 맞게 수열 변환하기 2 | 프로그래머스 스쿨 (programmers.co.kr)

문제 설명

정수 배열 arr가 주어집니다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더합니다.

이러한 작업을 x번 반복한 결과인 배열을 arr(x)라고 표현했을 때, arr(x) = arr(x + 1)인 x가 항상 존재합니다. 이러한 x 중 가장 작은 값을 return 하는 solution 함수를 완성해 주세요.

단, 두 배열에 대한 "="는 두 배열의 크기가 서로 같으며, 같은 인덱스의 원소가 각각 서로 같음을 의미합니다.

 

나의 풀이

.

 

모범 답안

def solution(arr):
    answer = 0
    old = arr
    while(True):
        new = []
        for i in old:
            if i>=50 and i%2 == 0:
                i = i/2
            elif i<50 and i%2 == 1:
                i = i*2 + 1
            new.append(i)
        if old == new:
            break
        else:
            old = new
            answer += 1
    return answer

 

'코딩테스트 > programmers (python)' 카테고리의 다른 글

20240107/ programmers/ 0단계/ python  (1) 2024.01.08
int형 list에 .join()사용 시 에러  (0) 2024.01.06
20240105/ programmers/ 0단계/ python  (0) 2024.01.05
20240104/ programmers/ 0단계/ python  (4) 2024.01.04
20240103/ programmers/ 0단계/ python  (0) 2024.01.03
'코딩테스트/programmers (python)' 카테고리의 다른 글
  • 20240107/ programmers/ 0단계/ python
  • int형 list에 .join()사용 시 에러
  • 20240105/ programmers/ 0단계/ python
  • 20240104/ programmers/ 0단계/ python
seulll
seulll
개인 공부 / 정리 블로그입니다 https://github.com/seul1009
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (344) N
      • 코딩테스트 (236) N
        • programmers (python) (158) N
        • 백준 (python) (76) N
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (43)
        • Python (4)
        • Java | Spring (7)
        • Android (5)
        • Unity (3)
        • API (4)
      • CS (15)
        • Network (5)
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 링크

    • GitHub
  • 인기 글

  • 태그

    카카오맵 api
    그리디 알고리즘
    백엔드 개발자 역량
    백엔드
    kakao map api
    solving environment
    오차행렬
    프로그래머스
    Greedy
    2 x n 타일링
    Boxplot
    데이터분석
    파이썬
    코딩테스트
    asterisk
    API
    티스토리챌린지
    박스플롯
    백엔드 개발자
    카카오맵
    대입 표현식
    train_test_split
    웹크롤링
    모델 성능 평가
    프렌즈4블록
    confusion matrix
    오블완
    야근 지수
    Python
    바다코끼리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
seulll
20240106/ programmers/ 0단계/ python
상단으로

티스토리툴바