본문 바로가기

Algorithm

(109)
[프로그래머스] 내적(feat.zip함수) https://school.programmers.co.kr/learn/courses/30/lessons/70128 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   단순 반복문 쓰면 풀리는 문제.. def solution(a, b): sum = 0 for i in range(len(a)): sum += a[i]*b[i] return sum  다른 사람의 풀이를 보니 zip 함수를 사용해서 풀이도 가능하였다. def solution(a, b): return sum([x*y for x, y in zip(a,b)]) zip 함수에..
[프로그래머스] 수박수박수박수박수박수? (join함수) https://school.programmers.co.kr/learn/courses/30/lessons/12922 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 필자는 다음과 같이 풀이했다. def solution(n): l = [] for i in range(n): if i % 2 == 0: l.append("수") else: l.append("박") s = ''.join(l) return s l이라는 리스트를 만들어주고, "수", "박" 문자열을 각각 번갈아가면서 넣어주..
[프로그래머스] 가운데 글자 가져오기 (문자열 다루기) https://school.programmers.co.kr/learn/courses/30/lessons/12903 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 다음과 같이 조건문을 이용하여 풀었다. def solution(s): if len(s) % 2 == 0: return (s[len(s) // 2 - 1] + s[len(s) // 2]) else: return s[len(s) // 2] 삼항연산자를 이용하여 굳이 한줄 풀이로 만들어보았다. def solution(s): return ((s[len(s) // 2 ..
[프로그래머스] 핸드폰 번호 가리기(range 활용, join함수로 문자열을 리스트로 변환, 문자열 다루기) https://school.programmers.co.kr/learn/courses/30/lessons/12948 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음에는 다음과 같이 풀었다. 하지만 에러가 떠버린다.phone_number = "01033334444"num_list = list(map(int, str(phone_number)))for i in range(-1, -5, -1): num_list[i] = "*"result = ''.join(num_list)print(result) 핸드폰 번호 가리기.py", line 21, in res..
[프로그래머스] 제일 작은 수 제거하기 https://school.programmers.co.kr/learn/courses/30/lessons/12935 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 파이썬의 내장함수인 min()과 remove(), 그리고 append()를 활용하면 굉장히 간단하게 풀리는 문제다.def solution(arr): ex = min(arr) arr.remove(ex) if len(arr) == 0: arr.append(-1) return arr 다른 사람의 풀이를 확인해봐도 현실적으로 시험장에서 생각해낼 수 있을 만한 ..
[프로그래머스] 나누어 떨어지는 숫자 배열 https://school.programmers.co.kr/learn/courses/30/lessons/12910 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 리스트에 있는 원소를 하나하나씩 diviosor로 나누어떨어지는지 확인하고, 나누어 떨어진다면 비어있는 리스트인 result에 하나씩 추가하였다. 만약 연산 이후에도 result에 하나의 원소도 없다면, 문제의 요구대로 -1만 삽입해주도록 예외처리를 해주었다. def solution(arr, divisor): result = [] for i in range (len(arr)): ..
[프로그래머스] 없는 숫자 더하기 https://school.programmers.co.kr/learn/courses/30/lessons/86051 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 0부터 9까지의 합은 45이므로 45에서 주어진 리스트의 합을 빼면 그냥 그게 답이다. 한줄 풀이. def solution(numbers): return(45 - sum(numbers))
[Python] zip함수(두 개의 리스트를 묶어주기) zip은 두 개의 리스트를 서로 묶어줄 때 사용한다. 다음의 예시를 살펴보자. name = ['gum', 'snack']price = [500, 1000]z = zip(name, price)print(list(z)) [('merona', 500), ('gugucon', 1000)] output 값을 보면 알겠지만, name과 price의 0번 원소는 0번 원소끼리, 1번 원소는 1번 원소끼리 묶어주고 zip 타입의 객체를 우리가 알고 있는 리스트 타입으로 반환하는 모습을 살펴볼 수 있다. 그렇다면 어떤 상황에 사용하는 것이 좋을까? 다음과 같이 for문과 함께 활용해서 사용할 수 있다.name = ['gum', 'snack']price = [500, 1000]for n, p in zip(name, pri..