일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 큐
- 알고리즘의 조건
- LV.1
- 알고리즘
- 스택
- Import
- 유사코드
- 자료구조
- itertools
- python
- 트리
- 코딩 테스트
- 알고리즘의 조건 5가지
- list
- 과일 장수
- Tree
- 코딩테스트
- 자바
- 파이썬
- 들여쓰기로 표현한 트리
- 리스트
- 좋은 알고리즘
- java
- Combination
- import itertools
- html
- 태그
- 프로그래머스
- 유한소수 판별하기
- 알고리즘 표현
- Today
- Total
목록Python (64)
인천의 자유인

나의 문제 풀이def solution(a,b,n): total = 0 remain = 0 while n>0: remain = remain + n%a n = (n // a)*b total += n if n%a != 0: n = n + remain remain = 0 return total 먼저 총 받을 개수를 구하기 위한 total를 만들고 그리고 나눴을 때 나머지가 될 remain이라는 변수를 만들어 줍니다. 그것을 만든 후에는 n이 0이 될 때 까지 계속 루프를 돌립니다. remain을 만들어 둔 이유는 10/2 같이 나누어 떨어질 경우에는 필요가 없지만 5/2같이 나누어 떨어지지 않은 경우도..

나의 문제 풀이def solution(food): answer = '' for i in range(1,len(food)): answer += str(i)*(food[i]//2) return answer + '0' + ''.join(reversed(answer)) 0번 인덱스 자리는 무조건 물이기 때문에 인덱스 1부터 시작을 합니다.answer이라는 빈 문자열에다 숫자 배치를 더하는데 i를 str로 변환해 주고 food[i]를 2로 나누어 줍니다. 만약 food[i]가 1이라서 0이 된다면 아무것도 안더해지고 1보다 큰 수는 str형으로 변환해준 i에다 food[i]를 2로 나누어준 수를 곱하기 때문에 왼쪽에서 부터 먹는 선수 부분의 숫자 배치는 완료 됩니다. 그리고 거기다 문자열 ..

나의 문제 풀이def solution(n, arr1, arr2): answer = [] for i in range(len(arr1)): string = '' number1,number2 = '','' num1,num2 = arr1[i], arr2[i] for j in range(n): number1 += str(num1%2) number2 += str(num2%2) num1 = num1//2 num2 = num2//2 for z in range(len(number2)): if number1[z] == '1'or number2[z] ==..

나의 문제 풀이def solution(strings, n): return sorted(strings, key = lambda x:(x[n],x)) 줄 길이가 굉장히 짧아서 당황하는 분들이 있을 것이라 생각한다.대부분 리스트를 오름차순으로 정렬할때 sorted를 많이 한다. 내림 차순으로 정렬을 한다고 했을 때에는 sorted를 한 뒤에 reverse=True를 하면 된다는 사실도 알 것이다. 특정 단어의 인덱스 위치에 있는 문자를 기준으로 정렬하려면 위의 코드 처럼 lambda함수를 써주면 매우 효과적이다. 어렵게 for문 많이 이용하면서 풀지 않아도 된다는 점이다.
한줄 for문과 if문을 입력 할 때에 주의 할 점은 아주 간단한 코드(명령문이 한줄)일 때 가능하다. 그렇다면 이제 먼저 if문부터 알아보자 1. if 문 1. if- 기존 방식num = 2 if num == 2: print('정답') - 한줄 코드num = 2 if num == 2: print('정답') 그냥 if뒤에 붙이면 된다. 2. if~else-기존 방식num = 2 if num == 2: print('정답') else: print('오답') -한줄 코드num = 2 print('정답') if num == 2 else print('오답')그냥 if와 if~else와 다른 점은 첫 번째 조건의 명령문이 맨 처음에 온다는 사실이다. 3. if~ elif ~else- 기존 방식num = 5 if n..
보호되어 있는 글입니다.

나의 문제 풀이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): dic = {0:'zero',1:'one',2:'two',3:'three',4:'four',5:'five',6:'six',7:'seven',8:'eight',9:'nine'} for i in range(10): s = s.replace(dic[i],str(i)) return int(s) 먼저 숫자 딕셔너리를 만듭니다. 그 다음에 0부터 9까지 for문을 돌리면서 replace를 해서 s문자에서 문자열부분을 숫자로 바꿔 줍니다.원래 s가 "zero9eight"이라면 이 문자를 숫자로 변경시켜서 "098"를 만드는 것입니다.그래도 여전히 문자열이기 때문에 int형으로 돌려주면서 return합니다.

나의 문제 풀이def solution(s): answer = [] a='' for i in s: a += i if a.count(i) == 1: answer.append(-1) else: c = 0 for j in range(len(a)-1, 0, -1): c+=1 if a[j-1] == i: answer.append(c) break return answer 마지막에 return할 빈 리스트를 만들어줍니다. 그리고 빈 문자열 a를 만들어 줍니다.a를 만든 이유는 예를 ..

나의 문제 풀이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..