개발일지

컨트롤 제트 .py 본문

Algorithm

컨트롤 제트 .py

wa_n 2023. 8. 10. 11:43
728x90
반응형
  • 문제 설명

    컨트롤 제트숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요. 
    제한사항
    • 1 ≤ s의 길이 ≤ 200
    • 1,000 < s의 원소 중 숫자 < 1,000
    • s는 숫자, "Z", 공백으로 이루어져 있습니다.
    • s에 있는 숫자와 "Z"는 서로 공백으로 구분됩니다.
    • 연속된 공백은 주어지지 않습니다.
    • 0을 제외하고는 0으로 시작하는 숫자는 없습니다.
    • s는 "Z"로 시작하지 않습니다.
    • s의 시작과 끝에는 공백이 없습니다.
    • "Z"가 연속해서 나오는 경우는 없습니다.

    입출력 예s result
    "1 2 Z 3" 4
    "10 20 30 40" 100
    "10 Z 20 Z 1" 1
    "10 Z 20 Z" 0
    "-1 -2 -3 Z" -3
    def solution(s):
        answer = 0
        arr = s.split(" ")
        for i,v in enumerate(arr):
            if v != "Z":
                answer += int(v)
            elif v == "Z":
                answer -= int(arr[i-1])
        return answer
    
    enumerate를 이용해서 인데스와 값을 불러와서 확인 후 인덱스 값을 이용해서 리스트에서 전에 값을 불러와 빼주었다.
    def solution(s):
        answer = 0
        for i in range(len(s := s.split(" "))):
            answer += int(s[i]) if s[i] != "Z" else -int(s[i-1])
        return answer
    
    //s := s.split(" ") 이부분은 처음 보는데 s를 s.split(" ")한걸로 하는거 같다 
    //인덱스 값으로만 해서 리스트에 접근해서 검증후 연산해주는 방식도 좋은거 같다 
    
    enumerate()
    for idx, value in enumerate(some_list):
        print(idx, value)
    
  • enumerate() 함수는 주어진 리스트(또는 튜플, 문자열 등의 순회 가능한 객체)의 인덱스와 값을 함께 제공해줍니다.
  • 다른사람 풀이
  • 문제 설명
  • 컨트롤 제트숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.
    제한사항
    • 1 ≤ s의 길이 ≤ 200
    • 1,000 < s의 원소 중 숫자 < 1,000
    • s는 숫자, "Z", 공백으로 이루어져 있습니다.
    • s에 있는 숫자와 "Z"는 서로 공백으로 구분됩니다.
    • 연속된 공백은 주어지지 않습니다.
    • 0을 제외하고는 0으로 시작하는 숫자는 없습니다.
    • s는 "Z"로 시작하지 않습니다.
    • s의 시작과 끝에는 공백이 없습니다.
    • "Z"가 연속해서 나오는 경우는 없습니다.

    입출력 예s result
    "1 2 Z 3" 4
    "10 20 30 40" 100
    "10 Z 20 Z 1" 1
    "10 Z 20 Z" 0
    "-1 -2 -3 Z" -3
    def solution(s):
        answer = 0
        arr = s.split(" ")
        for i,v in enumerate(arr):
            if v != "Z":
                answer += int(v)
            elif v == "Z":
                answer -= int(arr[i-1])
        return answer
    
    enumerate를 이용해서 인데스와 값을 불러와서 확인 후 인덱스 값을 이용해서 리스트에서 전에 값을 불러와 빼주었다.

 

  • 다른사람 풀이

def solution(s):
    answer = 0
    for i in range(len(s := s.split(" "))):
        answer += int(s[i]) if s[i] != "Z" else -int(s[i-1])
    return answer

//s := s.split(" ") 이부분은 처음 보는데 s를 s.split(" ")한걸로 하는거 같다 
//인덱스 값으로만 해서 리스트에 접근해서 검증후 연산해주는 방식도 좋은거 같다 
  • enumerate()
    enumerate() 함수는 주어진 리스트(또는 튜플, 문자열 등의 순회 가능한 객체)의 인덱스와 값을 함께 제공해줍니다.
    for idx, value in enumerate(some_list):
        print(idx, value)
    



728x90
반응형

'Algorithm' 카테고리의 다른 글

27. Remove Element  (0) 2023.08.24
88. Merge Sorted Array  (0) 2023.08.24
최솟값 만들기  (0) 2023.05.17
로또의 최고 순위와 최저 순위  (0) 2023.04.03
문자열 내 마음대로 정렬하기  (0) 2023.04.03