일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- memory
- 파이썬
- 일상
- 기초100제
- 알고리즘
- 공부
- react
- 자료구조
- react-redux
- 정렬
- 리덕스장바구니
- Java
- Operating System
- error
- 타입스크립트
- 토이프로젝트
- C++
- Redux
- CPU 스케줄링
- 스프링
- OS
- 백준
- 협업
- 프로그래머스
- js to ts
- Spring
- 분할메모리할당
- 코드업
- web
- codeup
- Today
- Total
목록알고리즘 (147)
감자튀김 공장🍟
✔ 문제 ✔ 풀이 s = list(map(str, input().split())) print(len(s)) ✔ 후기 split()을 기준으로 단어들을 나눠 리스트에 저장한 후 그 리스트의 길이를 출력하면 된다.
✔ 문제 ✔ 풀이 s = input().upper() # 대문자로 통일 (대문자로 출력하니까) word_list = list(set(s)) # s에 중복된 알파벳 제거 count_list = [s.count(i) for i in word_list] # word_list에 있는 알파벳의 개수를 저장 # count_list에 max 값이 여러개가 있다면 '?'을 출력 if count_list.count(max(count_list)) > 1: print('?') # max 값이 하나라면 count_list의 인덱스를 구해 word_list에서 해당 알파벳을 출력 # word_list와 count_list의 인덱스에 들어있는 요소(알파벳 - 개수)의 순서는 똑같음 else: print(word_list[coun..
✔ 문제 ✔ 풀이 t = int(input()) for _ in range(t): r, s = input().split() r = int(r) text = '' for i in s: text += r * i print(text) ✔ 후기 맨 처음 r이 int형이 아니기 떄문에 r * i를 할 경우 TypeError가 뜬다. 그렇기 때문에 int()로 r의 형을 변환시켜준 다음 사용하면 된다.
✔ 문제 ✔ 풀이 alp = [-1] * 26 s = list(input()) for i in s: x = ord(i) alp[x-97] = s.index(i) print(*alp) ✔ 후기 구현은 제대로 한 것 같은데 틀렸다고 하길래 어디가 틀렸는지 엄청 고민했다.. 출력 형식이 달라서 계속 틀렸다 뜬거였다. print(*리스트) 를 하게 되면 [1, 2, 3]이 아니라 1 2 3 형식으로 출력이 된다.
✔ 문제 ✔ 풀이 n = int(input()) numbers = list(map(int, input())) print(sum(numbers)) ✔ 후기 numbers = list(map(int, input())) 을 통해 숫자를 리스트에 저장할 수 있게 입력받은 후 sum()을 이용하여 리스트의 합을 구한다.
✔ 문제 ✔ 풀이 s = input() print(ord(s)) ✔ 후기 문자 > 아스키(유니) 코드로 출력하는 함수는 ord() 아스키(유니) 코드 > 문자 출력하는 함수는 chr() 이다. ex) ord('a') 의 결과는 97 chr(97)의 결과는 a
✔ 문제 ✔ 풀이 def get_hansu(n): hansu = 0 if n < 100: hansu = n else: hansu = 99 for i in range(100, n+1): num_list = list(map(int, str(i))) if num_list[0] - num_list[1] == num_list[1] - num_list[2]: hansu += 1 return hansu n = int(input()) print(get_hansu(n)) 입력받은 n을 한자리씩 쪼개 등차수열이 만들어지는지 확인해야한다. 1~99까지는 각 자리수의 차이가 1 또는 0이기 때문에 n이 100 미만인 경우는 입력받은 n의 값을 hansu의 값으로 return 해주면 된다. n이 100 이상인 경우에는 숫자를 ..
✔ 문제 ✔ 풀이 def d(n): n = n + sum(map(int, str(n))) # n과 n의 각 자릿수 합을 구한다 (ex. 37 = 37 + 3 + 7) return n Non = set() # 셀프 넘버가 아닌 수들이 들어갈 집합(중복 방지를 위해 set을 사용) for i in range(1, 10001): Non.add(d(i)) # 셀프 넘버가 아닌 수들을 구해 Non에 추가 for j in range(1, 10001): if j not in Non: # Non에 포함되지 않은 수(셀프 넘버)를 출력 print(j) ✔ 후기 1. 중복 방지를 위해 list가 아니라 set을 사용해야 한다는 점 2. 먼저 셀프 넘버가 아닌 수들을 구해서 집합에 저장해야한다는 점 3. not in을 사용..
✔ 문제 ✔ 풀이 sum()을 사용한 함수 def solve(a): return sum(a) for문을 사용한 함수 def solve(a): sum = 0 for i in a: sum += i return sum ✔ 후기 배열 a를 인자로 받아 배열의 요소 값을 return 하는 함수를 만들어야하는 문제이다. 배열을 입력 받는 것부터가 아니라 배열 요소들로 sum을 하는 함수를 구현하면 된다.
✔ 문제 ✔ 풀이 c = int(input()) for _ in range(c): scores = list(map(int, input().split())) avg = sum(scores[1:]) / scores[0] count = 0 for i in scores[1:]: if i > avg: count += 1 rate = count / scores[0] * 100 print('{0:0.3f}%'.format(rate)) ✔ 후기 학생들의 점수로 평균을 구하고, 그 평균을 넘는 학생들의 비율을 구하는 문제다. 평균값만 냅다 구해서 제출했다가 틀렸다고 떠서 뭐지... 하면서 문제를 다시 읽었다. avg 값을 구하고 for문을 돌려 각 점수가 avg 값보다 큰 경우의 갯수를 구한 후, 비율을 구하여 출력하면..