[Python] 코딩 기초 트레이닝61~90

NAYOUNG KIM·2023년 10월 5일
0

코딩테스트

목록 보기
4/13
post-thumbnail
# 61.특별한 이차원 배열 2
def solution(arr):
    answer = 1
    for i in range(len(arr)):
        for j in range(len(arr[i])):
            if arr[i][j] != arr[j][i]:
                answer = 0
    return answer
    
# 62.가까운 1 찾기
def solution(arr, idx):
    answer = -1
    for i, num in enumerate(arr):
        if i >= idx and num == 1:
            answer = i
            return answer
    else:
        return answer
        
# 63.x 사이의 개수
def solution(myString):
    return [len(w) for w in myString.split('x')]
    
# 64.두 수의 연산값 비교하기
def solution(a, b):
    tmp_1 = int(str(a) + str(b))
    tmp_2 = 2 * a * b
    answer = max(tmp_1, tmp_2) if tmp_1 != tmp_2 else tmp_1
    return answer
    
# 65.콜라츠 수열 만들기
def solution(n):
    answer = [n] 
    x = n
    while x != 1:
        x = x/2 if x % 2 == 0 else 3*x+1
        answer.append(x)
    return answer

# 66.특별한 이차원 배열 1
def solution(n):
    return [[1 if i == j else 0 for i in range(n)] for j in range(n)]
    
# 67.ad 제거하기
def solution(strArr):
    answer = []
    for str in strArr:
        if "ad" not in str:
            answer.append(str)
    return answer

# 68.덧셈식 출력하기
a, b = map(int, input().strip().split(' '))
print(a,'+',b,'=',a+b)

# 69.문자열 잘라서 정렬하기
def solution(myString):
    answer = myString.strip().split('x')
    answer.sort()
    while "" in answer:
        answer.remove("")
    return answer

# 70.접미사 배열
def solution(my_string):
    answer = []
    for i in range(len(my_string)):
        answer.append(my_string[i:])
    answer.sort()
    return answer

# 71.문자 리스트를 문자열로 변환하기
def solution(arr):
    answer = ''
    for str in arr:
        answer += str
    return answer

# 72.배열 만들기 3
def solution(arr, intervals):
    answer = []
    a1, b1 = intervals[0][0], intervals[0][1]
    a2, b2 = intervals[1][0], intervals[1][1]
    
    answer = arr[a1:b1+1]
    answer += arr[a2:b2+1]
    return answer

# 73.간단한 식 계산하기
def solution(binomial):
    tmp = binomial.split()
    a, b = int(tmp[0]), int(tmp[2])
    if tmp[1] == "+":
        answer = a + b
    elif tmp[1] == "-":
        answer = a - b
    else:
        answer = a * b
    return answer

# 74.9로 나눈 나머지
def solution(number):
    num_sum = 0
    num_len = len(str(number))
    for i in range(num_len):
        num_sum += int(str(number)[i])  
    answer = num_sum % 9
    return answer

# 75.주사위 게임 2
def solution(a, b, c):
    if a == b == c:
        answer = (a+b+c) * (a**2 + b**2 + c**2) * (a**3 + b**3 + c**3)
    elif (a==b) or (a==c) or (b==c):
        answer = (a+b+c) * (a**2 + b**2 + c**2)
    else:
        answer = a+b+c
    return answer

# 76.문자열 돌리기
str = input()
for x in str:
    print(x)

# 77.문자열 섞기
def solution(str1, str2):
    answer = ''
    for i in range(len(str1)):
        answer += str1[i] + str2[i]   
    return answer
    
# 78.수열과 구간 쿼리 1
def solution(arr, queries):
    for query in queries:
        s, e = query[0], query[1]
        for i in range(len(arr)):
            if (s<=i) and (i<=e):
                arr[i] += 1
    return arr

# 79.등차수열의 특정한 항만 더하기
def solution(a, d, included):
    answer = 0
    num_list = [a]
    for i in range(len(included)-1):
        num_list.append(num_list[-1]+d)
        
    for idx, value in enumerate(included):
        if value == True:
            answer += num_list[idx]    
    return answer

# 80.날짜 비교하기
def solution(date1, date2):
    if date1[0] < date2[0]:
        answer = 1
    elif (date1[0] == date2[0]) and (date1[1] < date2[1]):
        answer = 1
    elif (date1[0] == date2[0]) and (date1[1] == date2[1]) and (date1[2] < date2[2]):
        answer = 1
    else:
        answer = 0
    return answer

# 81.이차원 배열 대각선 순회하기
def solution(board, k):
    answer = 0
    for i in range(len(board)):
        for j in range(len(board[i])):
            if i + j <= k:
                answer += board[i][j]
    return answer

# 82.세로 읽기
def solution(my_string, m, c):
    answer = ''
    for i in range(c-1, len(my_string), m):
        answer += my_string[i]
    return answer
    
# 83.배열 만들기 5
def solution(intStrs, k, s, l):
    answer = []
    for str in intStrs:
        num = int(str[s:s+l])
        if num > k:
            answer.append(num)
    return answer
    
# 84.빈 배열에 추가, 삭제하기
def solution(arr, flag):
    answer = []
    for i in range(len(flag)):
        if flag[i] == True:
            cnt = arr[i] * 2
            for j in range(cnt):
                answer.append(arr[i])
        else:
            cnt = arr[i]
            answer = answer[:-cnt]                
    return answer
    
# 85.글자 지우기
def solution(my_string, indices):
    answer = ''
    for i in range(len(my_string)):
        if i not in indices:
            answer += my_string[i]
    return answer

# 86.수열과 구간 쿼리 3
def solution(arr, queries):
    answer = arr
    for query in queries:
        idx_1, idx_2 = query[0], query[1]
        tmp = answer[idx_1]
        answer[idx_1] = answer[idx_2]
        answer[idx_2] = tmp
    return answer

# 87.문자열 뒤집기
def solution(my_string, s, e):
    answer = my_string[:s]
    for i in range(e, s-1, -1):
        answer += my_string[i]
    answer += my_string[e+1:]
    return answer

# 88.1로 만들기
def solution(num_list):
    answer = 0
    for num in num_list:
        while num != 1:
            num = num/2 if num % 2 == 0 else (num-1)/2
            answer += 1
    return answer

# 89.세 개의 구분자
def solution(myStr):
    tmp = ''
    for str in myStr:
        if (str=="a") or (str=="b") or (str=="c"):
            tmp += " "
        else:
            tmp += str
    
    answer = tmp.strip().split()
    
    answer = ["EMPTY"] if answer == [] else answer 
    return answer

# 90.특정 문자열로 끝나는 가장 긴 부분 문자열 찾기
def solution(myString, pat):
    result = ''
    last_index = myString.rfind(pat)
    
    if last_index != -1:
        result = myString[:last_index + len(pat)]
    return result
profile
21세기 주인공

0개의 댓글