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

나의 문제 풀이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에 있는 것이 이해하기 여러우시면 아래와 같은 의미라고 보시면 될 것..

나의 문제 풀이def solution(s): answer = s.upper() return True if answer.count('P') == answer.count('Y') else False 먼저 문자열s내에 있는 문자들의 개수를 파악하기 쉽게 하기위해 이 안에 있는 문자열을 모두 대문자로 변경해줍니다.그런 후에는 count함수를 사용해서 문자열 내에 있는 P의 개수와 Y의 개수가 같다면 True을 return하고 아니면 False를 return하도록 해 줍니다.

나의 문제풀이def solution(common): if common[1] - common[0] == common[2]- common[1]: return common[-1] + (common[1]-common[0]) elif common[1]//common[0] == common[2]//common[1]: return common[-1]*(common[1] // common[0]) 첫번째 if문은 등차수열일때 일입니다. 등차 수열은 첫째 항 부터 차례대로 일정한 수를 더하여 만든 수열을 의미합니다.그렇기 때문에 리스트의 첫번째 요소와 두번째 요소의 뺄셈이 자연스럽게 두번째 요소와 세번째 요소와 같을 수 밖에 없습니다. 이런 것이 지속적으로 다오기 때문에 다음 수는 마지..

나의 문제 풀이def solution(num, total): answer = [] x = -num while True: total1 = total for i in range(x,x+num): total1 = total1 -i if total1 == 0: for j in range(x, x+num): answer.append(j) break x+=1 return answer 먼저 x 변수는 -num으로 만듭니다. 그 이유는 원소 안에 -가 들어 있는 경우가 있고 -total로 하기에는 너무 루프를 많이 돌리게 되어서 가장 적당하게 -num으로 했습니다..

나의 문제 풀이def solution(i, j, k): answer = 0 for x in range(i,j+1): answer+= str(x).count(str(k)) return answer i와 j 사이의 숫자를 str형으로 출력해서 그 숫자 안에 내가 원하는 숫자가 몇개 나오는지 count를 통해서 구했습니다.

나의 문제 풀이def solution(bin1, bin2): answer = '' number = 0 bin1 = "".join(reversed(bin1)) bin2 = "".join(reversed(bin2)) for i in range(len(bin1)): if bin1[i] == '1': number += 2**i if bin2[i] == '1': number += 2**i div = 0 while True: div = number%2 number = number//2 if div == 0: answer += '0' elif di..