코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 해결 과정 나의 풀이 def solution(answers): people = [[1, 2, 3, 4, 5], [2, 1, 2, 3, 2, 4, 2, 5], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]] answer = [] # 한 명씩 비교해서 정답 배열 return for person in people: count = 0 for index, value in enumerate(answers): if value == person[index % len(..
코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 해결 과정 1. x만 비교함 2. 1, 10, 100이 나오는 경우 1, 10, 100순으로 바꿔줬어야 했음. -> ljust로 했는데 오답. 힌트 보니 그 문자열을 반복해야 한다며 3. 테스트 케이스 11번 오류. 힌트 보니 0으로만 이루어진 문자열 -> 0으로 바꿔줘야 함. 나의 풀이 def solution(numbers): numbers = list(map(lambda x: str(x), nu..
코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 해결 과정 1, 2, 3, 4가 있다고 가정하면, 1은 2~4에서, 2는 3~4에서.. 찾아보면 된다 생각해서 for 문 두 번 돌렸더니 효율성 테스트 실패가 떴다. 힌트를 보니 for문 두 번 돌리면 안되고 i번째랑 i+1번째만 비교하면 된다고? 이해 안돼서 혼자 다시 생각해봄. 최대 20자리 숫자니까, 모든 숫자를 20자리 숫자로(0 붙이기) 만들고, 그를 바탕으로 정렬하면 i번째랑 i+1번째만 비교해도 된다고 판단했다. 근데 이것도 19번 케이스에서 실..
해결 과정 처음 생각: 차집합 해주면 되지 않나 생각했음. 근데, 중복된 선수가 있으니까 차집합 못씀. (근데 이런 비슷한 개념이라고 생각했음.) 무조건 participant는 completion보다 1개가 더 많을거고. 그럼 for문 다 돌면서 없는 것 빼주면 되겠다 생각함. 처음엔 completion를 하나씩 돌면서 participant의 첫번째 index 원소를 빼주는 방식으로 구현했는데, 정답은 나오지만 시간초과가 남. 그래서 결국 각각 sort 해주고, for문 하나씩 돌면서 다른 것 있으면 바로 출력하는 방식으로 구현함. 해결. 나의 풀이 def solution(participant, completion): participant.sort() completion.sort() for i, j in..