본문 바로가기

Algorithm

(109)
[프로그래머스] 이상한 문자 만들기 https://school.programmers.co.kr/learn/courses/30/lessons/12930 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  처음에는 이렇게 풀었는데 계속 오류가 나온다.s = "try hello world"list = s.split()for i in list: for j in range(len(i)): if j % 2 == 0: i[j] = i[j].upper()print(list) Traceback (most recent call last): File "c:\Users\user\..
[프로그래머스] 크기가 작은 부분 문자열 https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이 문제의 핵심은 두가지라고 생각한다.1. p와 같은 문자열의 길이를 갖는 부분문자열이 t에 몇개 있는지 파악하는 것2. p와 같은 문자열의 길이만큼 t에서 부분문자열을 추출하는 것 아래의 코드를 보자. def solution(t, p): tmp = 0 cnt = 0 r = len(t) - len(p) + 1 for i in range(r): tmp = t[i : ..
[프로그래머스] 예산 https://school.programmers.co.kr/learn/courses/30/lessons/12982 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  전형적인 그리디(Greedy) 유형의 문제다. 우선 코드부터 올리도록 하겠다. ㅇㅅㅇ def solution(d, budget): d.sort() total = 0 cnt = 0 for i in d: if total + i   total = 예산을 지원한 총액cnt = 예산을 지원받은 부서의 개수 이 문제의 핵심은 작은 금액을 요청한 부서부터 예산을 제공해주..
[Python] 최대공약수, 최소공배수 구하기 1. import mathmath 라이브러리를 불러올 수 있다면 이게 제일 간단한 방법이다.  import mathprint(math.gcd(12, 32))print(math.gcd(11, 33, 55))print(math.lcm(7, 13))print(math.lcm(6, 9, 12)) 41191362. 유클리드 호제법 유클리드 호제법이란 두 정수 a와 b에서 a를 b로 나눈 나머지가 r일 때, a와 b의 최대공약수는 b와 r의 최대공약수와 같다는 알고리즘이다. 이를 코드로 나타내보면 아래와 같다. def gcd(a, b): return b if a % b == 0 else gcd(b, a % b)def lcm(a, b): return int(a * b / gcd(a, b))def gcdlc..
[프로그래머스] 행렬의 덧셈 https://school.programmers.co.kr/learn/courses/30/lessons/12950 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  처음엔 다음과 같이 풀었다. 당연히 오답처리다. 왜일까?def solution(arr1, arr2): answer=[[]] for i in range(len(arr1)): for j in range(len(arr2)): answer[i][j] = arr1[i][j] + arr2[i][j] return answer 애초에 answer 리스트가 [ [ ]..
[프로그래머스] 문자열 다루기 기본(문자열을 리스트로 바꾸기, isdigit) https://school.programmers.co.kr/learn/courses/30/lessons/12918 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음엔 다음과 같이 풀었다.def solution(s): l = len(list(s)) if l == 4 or 6: if s.isdigit(): return True else: return False else: return False 위 풀이에서 오류가 보이는지 확인해보자.l == 4 or 6은 l == 4가..
[프로그래머스] 부족한 금액 계산하기 https://school.programmers.co.kr/learn/courses/30/lessons/82612 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 수열의 합공식을 알고 있다면 매우 간단히 풀 수 있는 문제다. (이 공식을 모르면 반복문을 써야한다)def solution(price, money, count): sum = price * count*(count+1) // 2 if sum
[프로그래머스] 문자열 내림차순으로 배치하기(feat.문자열 정렬) https://school.programmers.co.kr/learn/courses/30/lessons/12917 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  문자열도 리스트의 형태가 아니더라도 바로 sort 또는 sorted 함수를 사용할 수 있다.다만, 리스트의 형태로 반환되므로 join함수로 다시 문자열의 형태로 만들어주자! def solution(s): temp = sorted(s, reverse=True) result = ''.join(temp) return result  다른 사람의 풀이를 봐도 똑같은 논리다.def soluti..