アルゴリズム/プログラマ/レベル1/210612/5問題(Pythonを使用)


2021年6月12日


これはプログラマーが解いたレベル1 5問題の集合です.
コードには問題解決の説明が注記されています.

📖質問1:2つ引いてプラス



΄コード1(import組合せ)

from itertools import combinations

def solution(numbers):
    answer = []
    # numbers에서 2개를 뽑는 모든 경우
    for i, j in combinations(numbers, 2):
        add = i + j
        if add not in answer:
            answer.append(add)
    answer.sort()
    return answer

コード2

def solution(numbers):
    answer = []
    for i in range(len(numbers)-1):
        for j in range(i+1, len(numbers)):
            add = numbers[i] + numbers[j]
            if add not in answer:
                answer.append(add)
            
    answer.sort()
    return answer

📖質問2:2016年



パスワード

def solution(a, b):
    after = 0
    # 각 달에 있는 날짜수를 담은 리스트
    days = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    day = ['THU', 'FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED']
    # x월이라면 x-1월까지의 날짜수를 더해준다.
    for i in range(a-1):
        after += days[i]
    # y일을 더해준다.
    after += b
    # 요일을 구한다.
    answer = day[after%7]
    return answer

📖質問3:秘密の地図



パスワード

def solution(n, arr1, arr2):
    answer = []
    
    for one, two in zip(arr1, arr2):
        num = one | two
        # bin()은 맨 앞에 '0b'를 포함하는 문자열을 반환하므로 잘라내기
        num = bin(num)[2:]
        
        # 문자열 5글자 채우기
        while len(num) < n:
            num = '0' + num
            
        tmp = ''
        for a in num:
            if a == '1':
                tmp += '#'
            else:
                tmp += ' '
        answer.append(tmp)
    return answer

📖質問4:中間文字を入力



パスワード

ef solution(s):
    answer = ''
    mid = len(s) // 2
    # 글자수가 짝수이면
    if len(s) % 2 == 0:
        # 가운데 두 글자
        answer += s[mid-1] + s[mid]
    # 글자수가 홀수이면
    else:
        # 가운데 한 글자
        answer += s[mid]
    return answer

΄コード->他の人のコード

  • len(s)が奇数である場合、(len(s)−1)/2=len(s)//2の特性が利用される.
  • def string_middle(str):
        return str[(len(str)-1)//2:len(str)//2+1]

    📖質問5:私は同じ数字が好きではありません。



    パスワード

    def solution(arr):
        # 첫 문자는 미리 담아둔다
        answer = [arr[0]]
    
        for i in range(1,len(arr)):
            # 이전 문자와 현재 문자와 같지 않을 때만 정답 리스트에 문자를 담는다.
            if arr[i]!=arr[i-1]:
                answer.append(arr[i])
    
        return answer

    ΄コード->他の人のコード

  • 私のコードはarrで現在の文字と以前の文字を比較しました.
    彼らは、現在の文字がarrにあり、前の文字が答えリストの末尾(答え[1])にあることを比較することによって問題を解く.
  • def no_continuous(s):
        result = []
        for c in s:
            if (len(result) == 0) or (result[-1] != c):
                result.append(c)
        return result