가장 큰 수
https://school.programmers.co.kr/learn/courses/30/lessons/42746
[프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/42746)
문제 설명
- Input
0 또는 양의 정수가 담긴 배열 numbers
- Output
순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열
- Constraints
numbers의 길이는 1 이상 100,000 이하입니다.
numbers의 원소는 0 이상 1,000 이하입니다.
정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
알고리즘
sort …
코드
이거 다 쪼개는게 아니라 그 수 그 자체를 가지고 하는거였음 ;;
def solution(numbers):
arr =[]
for i in range(len(numbers)):
n = numbers[i]
if n >= 10:
num = list(map(int,str(n)))
arr.extend(num)
else:
arr.append(n)
arr.sort(reverse=True)
answer = "".join(map(str,arr))
return answer
테스트 케이스 1은 성공했는데 2는 성공하지 못했다
왜지?
문제를 잘못이해한건가?
9543330 > 9534330
누가봐도 전자가 크지않나..?
어쨌든 실패한 코드..ㅋ
가장 좋아요를 많이 받은코드
def solution(numbers):
numbers = list(map(str, numbers))
numbers.sort(key=lambda x: x*3, reverse=True)
return str(int(''.join(numbers)))
설명
이번에도 풀었던..흔적
약간 생각을 100중에 20까지밖에 못하는 것같다는 생각이..든다..
[
[프로그래머스] 가장 큰 수(python)
문제 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한조건 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 입출력 예 풀이 이 문제는 0 또는 양의 정수가 주어졌을 때..
](https://liveloper-jay.tistory.com/138)
https://liveloper-jay.tistory.com/138
리스트 병합
리스트와 리스트를 병합할 때는 extend 메서드를 사용합니다.
list.extend(iterable)
파이썬 오름차순, 내림차순 정렬
리스트.sort() 함수에는 reverse 옵션(매개변수)이 존재합니다.
디폴트는 리스트.sort(reverse=False) 인 게 디폴트여서 리스트가 오름차순으로 정렬이 되는 것이고
리스트.sort(reverse=True)로 변경하면 리스트가 내림차순으로 정렬이 됩니다.
Map
실수로 이루어진 a 리스트의 모든 요소를 정수로 변환하는 식 (map 사용)
a = [1.2, 1.3, 1.5, 1.7]
a = list(map(int,a))
print(a)
[1, 1, 1, 1]
어려웠던 점
다
이런거 시간복잡도는 어떻게 생각해요?
알고리즘 풀면서 어떤 자료구조가 필요하겠다 접목이 바로바로 되나요?
H-index
문제 설명
- Input
- 논문
n
편 중,h
번 이상 인용된 논문이h
편 이상이고 나머지 논문이 h번 이하 인용되었다면h
의 최댓값이 이 과학자의 H-Index - Output
- 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution
- Constraints
- 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
- 논문별 인용 횟수는 0회 이상 10,000회 이하입니다.
- Edge cases
알고리즘
- 정렬
코드
def solution(citations):
citations.sort(reverse = True)
for i in range(len(citations)):
if i >= citations[i]:
return i
테스트 9 가 실패했다 이유가 뭐지
설명
다른사람 풀이
- 역순으로 뒤집어서 citations[i]와 i를 비교해서 작은 값을 선택
defsolution(citations):
citations.sort(reverse=True)
answer = max(map(min, enumerate(citations, start=1)))
return answer
Enumerate()에는 두가지 매개변수가 있습니다.
- Iterable : 반복할 수 있는 개체입니다.
- StartIndex : (선택 사항) 개수는 루프의 첫 번째 항목에 대해 startIndex에 제공된 값으로 시작하고 루프의 끝에 도달할 때까지 다음 항목에 대해 증가합니다.지정하지 않으면 카운트는 0부터 시작 됩니다.
어려웠던 점
- 문제 이해가 어려웠다. 중간에 아예 잘못 이해해서 리스트의 인자가 다른 값에 포함되는 여부를 따지는줄 알았다.
'✍️2023 > Algorithm' 카테고리의 다른 글
[프로그래머스] BFS/DFS 2문제 (1) | 2023.10.19 |
---|---|
[프로그래머스] BFS/DFS 3문제 (1) | 2023.10.19 |
[프로그래머스] - 정렬 : K번째 수 (0) | 2023.09.13 |
[이코테] DFS/BFS (0) | 2023.07.05 |
[BOJ/1244] 구현 문제 (0) | 2023.04.26 |