본문 바로가기

Algorithm245

[프로그래머스] Lv1 - 행렬의 덧셈 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12950 코딩테스트 연습 - 행렬의 덧셈 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요 programmers.co.kr def solution(arr1, arr2): answer = [[x+y for x, y in zip(_arr1, _arr2)] for _arr1, _arr2 in zip(arr1, arr2)] return answer 풀이 1. answer을 각 자릿수의 합으로 만든다. 2. answer 리턴 answer = [[x+y for x.. 2022. 3. 26.
[프로그래머스] Lv1 - 핸드폰 번호 가리기 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12948 코딩테스트 연습 - 핸드폰 번호 가리기 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자 programmers.co.kr import re def solution(phone_number): return re.sub(r'\d(?=\d{4})', '*', phone_number) 풀이 1. re의 sub를 이용 (정규표현식, 바꿀 값, 목표 문자열) 2. 정규표현식 r'\d(?=\d{4})' : 뒤에 숫자 4개가 오는 숫자 - \d : 숫자 - (?=값) : 뒤.. 2022. 3. 26.
[프로그래머스] Lv1 - 하샤드 수 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12947 코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하 programmers.co.kr def solution(x): sum_x = sum(list(map(int, str(x)))) return True if not x % sum_x else False 풀이 1. 각 자릿수를 리스트화 해서 더한 값을 구한다. (sum_x) 2. x를 sum_x로 나누어 떨어지면 True 아니면 False를 리턴 2022. 3. 26.
[프로그래머스] Lv1 - 평균 구하기 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12944 코딩테스트 연습 - 평균 구하기 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 arr programmers.co.kr def solution(arr): return sum(arr)/len(arr) 풀이 1. 합을 길이로 나누어준 값 리턴 2022. 3. 26.
[백준] 3649번 - 로봇 프로젝트 (파이썬) # 로봇 프로젝트 while True: try: x = int(input())*10000000 n = int(input()) arr = [int(input()) for _ in range(n)] arr.sort() answer = [] left, right = 0, n-1 while left x: right -= 1 else: answer = [arr[left], arr[right]] break if answer: print('yes {0} {1}'.format(answer[0], answer[1])) else: print('danger') except: break 투포.. 2022. 3. 26.
[백준] 3079번 - 입국심사 (파이썬) # 입국심사 import sys input = sys.stdin.readline N, M = map(int, input().split()) arr = [] for _ in range(N): arr.append(int(input())) annswer = 0 left, right = 0, max(arr)*M while left M: break if people < M: left = mid + 1 else: right = mid - 1 answer = mid print(answer) 이분탐색 1. right을 가장 심사가 오래 걸리는 곳에서 모두 검사할 때의 시간으로 초기화 2. 이분탐색 - 해당 시간으로 입국심사를 할 수 있는 사람의 수 구하기 - 사람의 수가 M보다 작으면 left = mid +1 - 아니.. 2022. 3. 25.
[백준] 2343번 - 기타 레슨 (파이썬) # 기타 레슨 N, M = map(int, input().split()) arr = list(map(int, input().split())) answer = 0 left, right = max(arr), sum(arr) while left mid: count += 1 sum = 0 sum += arr[i] if sum: count += 1 if count > M: left = mid + 1 else: right = mid - 1 answer = mid print(answer) 이분탐색 1. left는 동영상 길이의 최솟값, right은 동영상 길이의 최댓값 2. 이분탐색 - 강의를 순서대로 블루레이에 넣는다. 길이는 mid - 강의를 넣고 나온 블루레이의 개수가 M보다 크다면 left = mid +1 -.. 2022. 3. 25.