전체 글
-
72410. 신규 아이디 추천(Python, Programmers Level 1)Programmers 2022. 9. 4. 00:51
문제 설명 신규 가입하고자 하는 유저로부터 아이디를 입력받아, 규칙에 맞는 새로운 아이디를 추천합니다. 단계별 처리 과정을 거쳐 아이디를 구성합니다. 코드 1단계: new_id의 모든 대문자를 대응되는 소문자로 치환합니다. new_id = new_id.lower() 2단계: new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. new_id = ''.join(filter(lambda x: x.islower() or x.isnumeric() or x in '-_.', new_id)) 3단계: new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. while '..' in new_id: new_id = new_id.re..
-
77484. 로또의 최고 순위와 최저 순위(Python, Programmers Level 1)Programmers 2022. 9. 4. 00:36
문제 설명 주어진 숫자를 바탕으로 만들 수 있는 로또의 최고 순위와 최저 순위를 알아냅니다. 구매한 로또 번호 중 0은 현재 알 수 없는 숫자입니다. 최고 순위는 가장 많은 숫자를 맞아야 하기에, 모르는 숫자를 맞은 것으로 가정합니다. 최저 순위는 가장 적은 숫자를 맞아야 하기에, 모르는 숫자를 틀린 것으로 가정합니다. 이 가정으로 나오는 최고 순위와 최저 순위를 반환합니다. 코드 로또 번호 중 몇 개가 맞았고 몇 개가 틀렸는지 알아야 합니다. 하지만, lottos에 제시된 숫자 중 0은 알 수 없는 숫자입니다. 알 수 없는 숫자의 개수와 정확하게 맞은 숫자의 개수를 계산합니다. dont_know_count = 0 win_count = 0 for num in lottos: if num == 0: dont..
-
86491. 최소직사각형(Python, Programmers Level 1)Programmers 2022. 9. 4. 00:24
문제 설명 주어진 명함 종류를 모두 수납할 수 있는 명함 지갑의 최소 크기를 반환하는 문제입니다. 명함마다 다른 w와 h가 주어지며, 명함을 눕혀 보관할 수도 있습니다. 따라서, w와 h 중 작은 수끼리 비교하고, w와 h 중 큰 수끼리 비교하여 최댓값끼리 곱하여 답을 얻을 수 있을 것입니다. 코드 w, h 중 작은 것끼리 비교하여 최댓값을 구하고, w, h 중 큰 것끼리 비교하여 최댓값을 구합니다. max_of_small = 0 max_of_big = 0 for w, h in sizes: max_of_small = max(max_of_small, min(w, h)) max_of_big = max(max_of_big, max(w, h)) 더보기 def solution(sizes): max_of_small..
-
12906. 같은 숫자는 싫어(Python, Programmers Level 1)Programmers 2022. 9. 4. 00:16
문제 설명 연속적으로 나타나는 숫자를 제거하고 남은 숫자를 반환합니다. 기존 배열을 순회하며 새 배열을 만들어 반환할 것입니다. 만약, num이 첫 번째 항목이면 일단 결과 배열에 넣고, 그렇지 않다면 이전 값과 다른 경우에만 결과에 넣습니다. 코드 num이 첫 번째 항목이거나 이전 값과 다를 때 결과 배열에 넣어줍니다. answer = [] for i, num in enumerate(arr): if i == 0 or arr[i - 1] != num: answer.append(num) 더보기 def solution(arr): answer = [] for i, num in enumerate(arr): if i == 0 or arr[i - 1] != num: answer.append(num) return a..
-
92334. 신고 결과 받기(Python, Programmers Level 1)Programmers 2022. 9. 4. 00:05
풀이 게시판의 다른 유저를 신고하며, 신고한 유저가 정지되면 메일을 수신합니다. report에는 중복이 존재할 수 있으나, 한 유저에 대한 신고는 1회만 유효하므로 report에서 중복을 제거해야 합니다. 가장 쉽게 중복을 제거하는 것은 set 자료형을 활용하는 것입니다. report를 순회하며 신고당한 횟수를 누적하고, 다시 한 번 report를 순회하며 정지시킨 유저를 종합하여 이 결과를 반환합니다. 코드 report에서 중복을 제거합니다. report = set(report) 신고당한 횟수를 누적합니다. 여기서는 신고한 유저가 누구인지는 중요하지 않습니다. reported_counter = defaultdict(int) for r in report: _, reported_user = r.split(..
-
118666. 성격 유형 검사하기(Python, Programmers Level 1)Programmers 2022. 9. 3. 23:43
설명 MBTI 성격유형검사와 매우 유사한 문제입니다. 입력에는 어떤 성격 유형의 지표가 사용되었는지와 점수가 쌍으로 입력되며, 성격 유형 검사는 다음과 같은 네 개의 지표로 성격을 구분합니다. 지표 번호 성격 유형 1번 지표 라이언형(R) 튜브형(T) 2번 지표 콘형(C) 프로도형(F) 3번 지표 제이지형(J) 무지형(M) 4번 지표 어피치형(A) 네오형(N) 부여되는 점수는 다음과 같습니다. choice 먼저 등장한 알파벳 나중에 등장한 알파벳 1 3 0 2 2 0 3 1 0 4 0 0 5 0 1 6 0 2 7 0 3 4보다 낮은 숫자가 들어오면 입력받은 지표 중 앞의 문자에 점수를, 4보다 높은 숫자가 들어오면 입력받은 지표 중 뒤의 문자에 점수를 부여하게 되며, 부여되는 점수는 (4 - score)..