[프로그래머스] 짜잘한 Lv.1 문제 모음 (3) (Python)

seulzzang·2022년 9월 21일
0

코딩테스트 연습

목록 보기
14/44
post-thumbnail

1. 문자열 내림차순으로 배치하기

[프로그래머스] Lv.1 문자열 내림차순으로 배치하기

아스키코드값을 이용했다. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.라고 했으므로.. A는 65고 a는 97이니까 아스키값을 비교해주면 되겠구나~하고 이걸로 풀었다.

def solution(s):
    answer = ''
    ascii_list = []
    for i in s:
        ascii_list.append(ord(i))
    ascii_list.sort(reverse=True)
    for j in ascii_list:
        answer += chr(j)
    return answer

ord(i)로 아스키값 구하고, 이를 내림차순으로 정렬한 다음 chr(j)를 이용해 answer에 하나씩 더해줬다.

💻다른사람 풀이

def solution(s):
    return ''.join(sorted(s, reverse=True))

나는 개뻘짓했다..sorted를 쓰면 문자열을 자동으로 정렬해준단다..어이가 없다.. 이제라도 알았으면 됐다..

2. 없는 숫자 더하기

[프로그래머스] Lv.1 없는 숫자 더하기

def solution(numbers):
    answer = -1
    list=[]
    # 배열에 없으면 담아주고 더해주기 
    for num in range(1, 10):
        if num in numbers: # 있으면 넘어가고
            continue
        else:
            list.append(num)
            
    answer = sum(list)
    return answer

💻다른사람 풀이

def solution(numbers):
    return 45 - sum(numbers)

이제 슬슬 내자신에게 짜증남

3. 문자열 다루기 기본

[프로그래머스] Lv.1 문자열 다루기 기본

def solution(s):
    if (len(s) == 4 or len(s) == 6) and s.isdigit():
        return True
    else:
        return False

📖파이썬 문자열 메서드

문자열 s가 주어졌을 때

  • s.count(x) : x가 등장하는 횟수 반환
  • s.find(x) : x가 존재하는 인덱스를 반환 (없다면 -1, 여러개면 맨 처음 인덱스만)
  • s.rfind(x) : x가 존재하는 인덱스를 반환 (없다면 -1, 여러개면 맨 마지막 인덱스만)
  • s.upper() : 모든 문자를 대문자로
  • s.lower() : 모든 문자를 소문자로
  • s.swapcase() : 소문자는 대문자로, 대문자는 소문자로
  • s.capitalize() : 첫 문자만 대문자로 변경하고 나머지 문자열은 모두 소문자로
  • s.title() : 각 단어의 앞 문자를 대문자로 바꿔주고 다른 문자들은 소문자로

.lstrip(), .rstrip(), .strip(), .replace()는 자주 쓰는 메서드라 생략
isdigit(), isalpha(), islower(), isupper()도 까먹지 않긔 ^^

4. 행렬의 덧셈

[프로그래머스] Lv.1 행렬의 덧셈

def solution(arr1, arr2):
    answer = []
    for i in range(len(arr1)):
        arr_sum = []
        for j in range(len(arr1[i])):
            arr_sum.append(arr1[i][j] + arr2[i][j])
        answer.append(arr_sum)
    return answer

5. 약수의 개수와 덧셈

[프로그래머스] Lv.1 약수의 개수와 덧셈

def solution(left, right):
    answer = 0
    for i in range(left, right+1): # left부터 right까지
        cnt = 0
        for j in range(1, i+1): # i(본인까지 나눠주기)
            if i % j == 0: # 나누어 떨어지면 약수
                cnt += 1 # 약수의 개수에 더해줌    
        if cnt % 2 == 0:
            answer += i
        else:
            answer -= i         
    return answer

💻다른사람 풀이

def solution(left, right):
    answer = 0
    for i in range(left,right+1):
        if int(i**0.5)==i**0.5:
            answer -= i
        else:
            answer += i
    return answer

제곱수의 약수의 개수는 홀수개임을 이용한 풀이.. 생각해보면 제곱수가 아니면 모두 다른 수가 짝지어서 곱해지니까..
난 공대생이 맞는가
이런거 1개도 모름..

profile
중요한 것은 꺾이지 않는 마음

0개의 댓글