일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬
- python
- 자료구조
- 트리
- 태그
- LV.1
- 알고리즘
- list
- 알고리즘의 조건
- 큐
- itertools
- 좋은 알고리즘
- 코딩테스트
- html
- 들여쓰기로 표현한 트리
- Tree
- 프로그래머스
- 과일 장수
- 자바
- java
- 유사코드
- 리스트
- Combination
- import itertools
- 코딩 테스트
- 알고리즘 표현
- 스택
- 알고리즘의 조건 5가지
- 유한소수 판별하기
- Import
- Today
- Total
목록LV.1 (21)
인천의 자유인

나의 문제 풀이def solution(numbers): lst = [] for i in range(len(numbers)): for j in range(len(numbers)): if i == j: continue lst.append(numbers[i] + numbers[j]) return sorted(list(set(lst))) 먼저 빈 리스트 lst를 생성합니다.그 다음에 numbers리스트의 값들을 각각 더하는 작업을 합니다. 다만 자기 자신을 더하는 일이 없도록 i와 j가 같을 경우에는 continue를 실행합니다. 그리고 같지 않다면 lst에 append해서 요소를 추가합니다.그것이 다 끝나면 set로..

나의 문제 풀이def solution(s, n): import string answer = '' lower_alpha = list(string.ascii_lowercase) + list(string.ascii_lowercase) upper_alpha = list(string.ascii_uppercase) + list(string.ascii_uppercase) for i in s: if i.isupper() == True: a = upper_alpha.index(i) answer = answer + upper_alpha[a+n] elif i.islower() == True: a = lower_a..

나의 문제 풀이def solution(sizes): a = max(map(max, sizes)) #전체 최댓값 for i in sizes: if a in i: b = min(i) c=b #변경할 값 for i in sizes: if min(i) >= b and min(i) >= c: c = min(i) return a*c 변수 a는 이차원 배열 안에서 가장 큰 값을 구하는데 쓰는 것입니다. 왜냐하면 해답을 구하기 위해서는 가장 긴 변을 구해야 하기 때문입니다. 그리고 가장 큰 값의 옆에 있는 요소를 구하기 위해 for문을 사용했습니다. 그리고 마지막으로 곱할 다른 변을 구하기 위해 계속 변경을 할 수 있는..

나의 문제 풀이def solution(d, budget): a, count = 0,0 d.sort() for i in d: a += i if a > budget: break count += 1 return count a는 더하는 숫자이고 count는 물품을 구매할 수 있는 최대 개수입니다.먼저 b를 sort로 해서 오름차순으로 정렬합니다. 왜냐하면 가장 적은 수부터 구매를 할 수록 최대한 많은 양을 구입할 수 있기 때문입니다. 지갑(budget)에 들어 있는 돈의 가격을 추월하기 전까지 리스트의 구매값을 차례대로 더합니다. a가 budget에 있는 돈을 넘었을 경우 break를 하고 구매 개수를 return합니다.

나의 문제 풀이def solution(t, p): answer = [] count = 0 for i in range(len(t)-len(p)+1): answer.append(t[i:i+len(p)]) for i in answer: if int(i) answer이라는 빈 리스트에다가 p 숫자의 길이씩 추가해 줍니다.예를 들면 t가 "3141592"이고 p가 "271"이라고 한다면 p가 3자리 숫자 이기때문에 answer이라는 리스트는 세자리 숫자씩 추가해서 ["314", "141", "415", "159", "592"]를 만듭니다.그리고 이것이 만들어 졌으면 본격적으로 p와 리스트 요소와 크기 비교를 해야하기 때문에 answer 리스트의 요소를 하나씩 꺼냄..

나의 문제 풀이def solution(n): answer = '' while True: remain = n%3 answer = str(remain) + answer n = n//3 if n==0: break result = 0 for i in range(len(answer)): result = result + (int(answer[i])*(3**i)) return result 거꾸로된 3진법을 바로 구하기 위해 while True을 했습니다. 3진법의 숫자들은 나머지들이기 때문에 나머지를 구한 후 remain을 문자로 바꿔서 answer에 더해줍니다. 여기서 answer = answer + str(remain)을 ..

나의 문제 풀이def solution(arr): answer = [] i=0 while i 먼저 결과값을 만들 빈 리스트를 만듭니다.그리고 while문을 arr리스트 마지막 인덱스-1 까지 돌립니다. 왜냐하면 아래 if문을 돌릴 때 i+1이 있어서 리스트 범위 밖으로 돌렸다고 에러가 나기 때문입니다. 자신의 원소와 다음 원소가 다를 경우 answer에 그 원소를 추가하는 방식으로 돌립니다. 그러나 이렇게 할 경우 마지막 인덱스 부분이 추가가 되지 않기 때문에 이를 위해 마지막 인덱스는 추가하는 방식으로 해서 답을 구했습니다.

나의 문제 풀이def solution(s): if s.isdigit() == True and len(s) in [4,6]: return True else: return False isdigit()은 숫자인지 아닌지 판단하는 함수입니다. 알파벳 하나라도 들어가 있으면 나머지가 숫자라도 숫자가 아니기 때문에 isdigit()을 사용했습니다. 또한 문자열 길이가 4 또는 6이어야 하기 때문에 len(s) in [4,6]을 사용해서 if문을 만들었습니다.즉 s 문자열이 숫자가 True이면서 s의 길이가 4이거나 6이면 True로 하고 그것이 아니면 False를 출력하는 방식으로 프로그램을 짰습니다.

나의 문제 풀이def solution(left, right): num = 0 for x in range(left,right+1): answer = 0 for y in range(1,x+1): if x%y == 0: answer+=1 if answer%2 == 0: num += x elif answer%2 ==1: num -= x return num num은 최종 연산을 return하기 위한 변수입니다.먼저 작은 수부터 큰 수까지 한번식 루프를 돌립니다. 그런 다음 이중 for문으로 x의 약수의 개수를 찾습니다. 그리고 answer+=1를 통해 약수가 나..

나의 문제 풀이def solution(arr, divisor): answer = [] for i in arr: if i%divisor == 0: answer.append(i) return sorted(answer) if len(answer) > 0 else [-1] 먼저 arr요소를 for문으로 하나씩 루프를 돌려서 그 요소가 만약 divisor과 나누어 떨어지는 수일 경우에는 answer 리스트에 추가합니다. 단 리턴을 할 때 값을 오름차순으로 정렬해야하며 만약 나누어 떨어지는 요소가 없을 경우에는 [-1]를 출력을 해야하기 때문에 한줄 if문을 이용해서 리턴했습니다. 마지막 return에 있는 것이 이해하기 여러우시면 아래와 같은 의미라고 보시면 될 것..