코딩테스트 입문 Day 13 문자열, 배열, 사칙연산, 수학, 조건문


1. 컨트롤 제트

숫자와 “Z”가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 “Z”가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 “Z”로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.

제한사항

  • 1 ≤ s의 길이 ≤ 200
  • -1,000 < s의 원소 중 숫자 < 1,000
  • s는 숫자, “Z”, 공백으로 이루어져 있습니다.
  • s에 있는 숫자와 “Z”는 서로 공백으로 구분됩니다.
  • 연속된 공백은 주어지지 않습니다.
  • 0을 제외하고는 0으로 시작하는 숫자는 없습니다.
  • s는 “Z”로 시작하지 않습니다.
  • s의 시작과 끝에는 공백이 없습니다.
  • “Z”가 연속해서 나오는 경우는 없습니다.

(1) 코드 작성

def solution(s):
    # 공백을 기준으로 나누기
    s = s.split(" ")
    answer = []
    # 'Z'값인 경우 answer에 들어가있는 마지막 값에 -1를 곱한 값으로 처리 후 넣기
    for n in s:
        if n == 'Z':
            answer.append(answer[-1]*-1)
        else:
            answer.append(int(n))
    return sum(answer)

(2) 코드 리뷰 및 회고

  • 문제는 문자열로 이루어진 입력값을 공백을 기준으로 나누고, Z값이 있을 경우 Z값 이전의 값을 빼준 후 더하는 것이다.
  • 공백을 기준으로 숫자를 나누고 Z값이 있을 경우 그 앞에 있는 값에 -를 붙여서 넣어준다.
  • 그리고 sum 함수를 사용하여 리스트 내 요소들의 합을 구했다.

  • 예시 적용
    • s = "1 2 Z 4 Z"
    • s.split(" ") > [“1”, “2”, “Z”, “4”, “Z”]
    • 반복문 내에서 s내 요소가 Z가 아니면 int 처리 후 answer 리스트에 넣기
    • 요소가 Z이면 answer에 들어간 요소 마지막 값에 -처리 후 넣기
    • 반복문 1차 결과 : answer = [1]
    • 반복문 2차 결과 : answer = [1, 2]
    • 반복문 3차 결과 : answer = [1, 2, -2]
    • 반복문 4차 결과 : answer = [1, 2, -2, 4]
    • 반복문 5차 결과 : answer = [1, 2, -2, 4, -4]
    • sum([1, 2, -2, 4, -4]) == 1
  • EASY 😎


2. 배열 원소 길이

문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ strlist 원소의 길이 ≤ 100
  • strlist는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다.

(1) 코드 작성

def solution(strlist):
    return [len(s) for s in strlist]

(2) 코드 리뷰 및 회고

  • 문제는 strlist로 들어오는 입력값에 포함된 요소들의 길이를 리스트에 담아 반환하는 것이다.
  • 그래서 리스트 컴프리헨션으로 입력값의 요소(s)를 불러오고 s의 길이를 담을 수 있도록 len 함수를 사용했다.
  • EASY 😎


3. 중복된 문자 제거

문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ my_string ≤ 110 my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
  • 대문자와 소문자를 구분합니다.
  • 공백(“ “)도 하나의 문자로 구분합니다.
  • 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.

(1) 코드 작성

def solution(my_string):
    answer = ""
    for s in my_string:
        if s not in answer:
            answer += s
    return answer

(2) 코드 리뷰 및 회고

  • 문제는 중복된 알파벳이 있는 경우, 가장 앞에 있는 문자만 남기고 나머지는 제거하는 것이다.
  • 이 조건을 만족시키기 위해 answer 변수에 빈 문자열을 지정하고 my_string에 있는 요소들을 하나씩 넣는데 answer에 없는 경우에만 들어갈 수 있도록 했다.
  • EASY 😎


4. 삼각형의 완성조건 (1)

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.

제한사항

  • sides의 원소는 자연수입니다.
  • sides의 길이는 3입니다.
  • 1 ≤ sides의 원소 ≤ 1,000

(1) 코드 작성

def solution(sides):
    sorted_sides = sorted(sides, reverse=True)
    large_s = sorted_sides[0]
    other_sum_s = sum(sorted_sides[1:])
    return 2 if large_s >= other_sum_s else 1

(2) 코드 리뷰 및 회고

  • 삼각형이 만들어질 수 있는 조건은 가장 긴 변의 길이가 나머지 두 변의 길이의 합보다 커야한다.
  • 가장 긴 변의 길이를 large_s 변수에 할당한다.
  • 나머지 두 변의 길이 합을 other_sum_s 변수에 할당한다.
  • 최종적으로 삼각형이 될 수 있다면 1, 조건을 만족하지 않는다면 2가 반환되도록 설정했다.
  • EASY 😎


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기