코딩테스트[파이썬]/입문자를 위한 코딩테스트 핵심 42

[정렬] -사탕

사탕 종류 현수는 사탕을 좋아합니다. 현수에게 사탕이 n개 있습니다. 현수 엄마는 현수가 요즘 너무 사탕을 많이 먹어 건강에 좋지 않다고 생각해 현수에게 가지고 있는 사탕의 절반(n/2)개만 먹으라고 했습니다. n은 항상 짝수입니다. 매개변수 nums에 현수가 가지고 있는 n개의 사탕의 종류 정보가 주어지면 현수가 n/2개의 사 탕을 먹는다면 최대 몇 종류의 사탕을 먹을 수 있는지를 반환하는 프로그램을 작성하세요. 제한사항: • nums의 길이는 100,000을 넘지 않습니다. • nums[i]는 i번재 사탕의 종류를 의미합니다. nums[i]값이 같으면 같은 종류의 사탕입니다. • 1

[시물레이션] -위험지역

위험 지역 n*n 이차원 배열에 특정 지역의 지뢰정보가 지도로 주어집니다. 만약 아래와 같이 5*5의 지도에 지뢰정보가 주어지면 위에 지도에서 1은 지뢰가 매설된 지역이고, 0은 빈땅입니다. 위에 지도에서 지뢰가 매설된 격자와 상하좌우 대각선으로 인접한 8개의 빈땅 격자를 위험지 역입니다. 위에 지도에서 위험지역은 총 14개입니다. 매개변수 board에 특정지역의 지뢰정보가 담겨진 지도가 주어지면 이 지역에 위험지역이 총 몇 개 있는지 반환하는 프로그램을 작성하세요. 제한사항: • 3

[시물레이션] - 로봇의 이동

로봇의 이동 이차원 배열 격자판 0행 0열에 로봇이 3시 방향을 보고 있습니다. 로봇은 다음 규칙에 따라 이동합니다. 1. 'G' 명령을 주면 보고 있는 방향으로 한 칸 이동합니다. 격자 밖으로 나가는 명령은 하지 않습니다. 2. 'R' 명령을 주면 오른쪽으로 90도 회전합니다. 3. 'L' 명령을 주면 왼쪽으로 90도 회전합니다. 매개변수 moves에 로봇에 명령을 내린 문자들이 차례대로 나열된 명령 문자열이 주어지면 이 명령 문자열을 로봇이 모두 수행했을 때 최종 위치를 반환하는 프로그램을 작성하세요. 제한사항: • moves의 길이는 100을 넘지 않습니다. • 2차원 배열 격자판의 크기는 100*100입니다. 입력예제 1 설명 : 나의코드 def solution(moves): x = y = 0 d..

[시물레이션] -청소로봇 2

청소 로봇(ver 2) n*n 크기의 이차원 배열 격자판 0행 0열이 청소 로봇의 시작위치입니다. 청소 로봇은 다음 규칙에 따라 이동합니다. 1. 'U' 명령은 로봇이 위쪽으로 한 칸 이동합니다. 2. 'R' 명령은 로봇이 오른쪽으로 한 칸 이동합니다. 3. 'L' 명령은 로봇이 왼쪽으로 한 칸 이동합니다. 4. 'D' 명령은 로봇이 아래쪽으로 한 칸 이동합니다. 5. 만약 로봇이 명령을 수행할 경우 격자판 밖으로 나가는 경우라면 로봇은 해당 명령을 수행 하지 않고 무시합니다. 매개변수 n에 격자판 크기가 주어지고, moves에 청소 로봇에 명령을 내린 문자들이 차례대로 나열된 명령 문자열이 주어지면 청소 로봇이 최종적으로 멈춘 위치를 반환하는 프로그램을 작 성하세요. 제한사항: • moves의 길이는 ..

[시물레이션] -청소로봇 1

청소 로봇(ver 1) 이차원 배열 격자판 0행 0열이 청소 로봇의 시작위치입니다. 청소 로봇은 다음 규칙에 따라 이동합니다. 1. 'U' 명령은 로봇이 위쪽으로 한 칸 이동합니다. 2. 'R' 명령은 로봇이 오른쪽으로 한 칸 이동합니다. 3. 'L' 명령은 로봇이 왼쪽으로 한 칸 이동합니다. 4. 'D' 명령은 로봇이 아래쪽으로 한 칸 이동합니다. 매개변수 moves에 청소 로봇에 명령을 내린 문자들이 차례대로 나열된 명령 문자열이 주어지 면 이 명령 문자열을 청소 로봇이 모두 수행했을 때 최종 위치를 반환하는 프로그램을 작성하 세요. 격자판 밖으로 벗어나는 명령은 주어지지 않습니다. 제한사항: • moves의 길이는 100을 넘지 않습니다. • 2차원 배열 격자판의 크기는 100*100입니다. 나의 ..

[시물레이션] -웅덩이

웅덩이 매개변수 nums에 n행 n열의 이차원 배열에 격자판 정보가 주어집니다. 각 격자에는 그 지역의 높이가 쓰여있습니다. 각 지역은 상하좌우 인접한 지역의 숫자가 모두 자신보다 클 경우 이 지역을 웅덩이 지역이라고 합니다. 격자의 가장자리는 1000으로 초기화 되었다고 가정한다. 만약 5*5 이차원 배열의 격자판 정보가아래와 같다면 총 웅덩이의 수는 5개입니다. 주어진 격자에 웅덩이가 몇 개 있는지 찾아 그 개수를 반환하는 프로그램을 작성하세요. 제한사항: • 3 = nums[nx][ny]: flag = False break if flag == True: answer += 1 return answer print(solution([[10, 20, 50, 30, 20], [20, 30, 50, 70, 9..

[해시] - 두 수의 합

두 수의 합 정수 수열 안에서 수열의 원소 두 개의 합이 target값이 되는 경우를 찾고 싶습니다. 매개변수 nums에 길이가 n인 수열이 주어지고, 매개변수 target에 자연수 값이 주어지면 이 수열안에서 두 개의 원소의 합이 정수 target값이 되는 두 원소를 구해 배열에 오름차순으로 담아 반환합니다. 두 개의 원소의 합이 target값이 되는 경우는 오직 한가지 뿐인 입력만 주어집니다. 한 원소를 두 번 더하는 것은 안됩니다. nums의 각 원소는 유일값입니다. 답이 없을 경우 [0, 0]을 반환합니다. 제한사항: • nums의 길이 3

[해시] - 팰린드롬의 길이

팰린드롬 길이 문자열이 주어지면 해당 문자열의 문자들을 가지고 만들 수 있는 최대길이 팰린드롬을 만들고 그 길이를 구하세요. 문자열은 소문자로만 이루어져 있습니다. 만약 "abcbbbccaaeee" 가 주어진다면 만들 수 있는 가장 긴 팰린드롬은 "ebbcaaacbbe"이고 답은 11입니다. 제한사항: • s의 길이는 1,000을 넘지 않습니다. 나의 코드 from collections import Counter def solution(s): answer = 0 CC=Counter(s) cnt=0 for x in CC: if CC[x]%2==1: cnt+=1 if cnt >1: answer=len(s)-(cnt-1) else: answer=len(s) return answer print(solution(..

[해시] -팰린드롬 확인

팰린드롬 확인 소문자로만 이루어진 문자열이 주어지면 해당 문자열의 문자들의 순서를 재배치해서 팰린드롬 (회문)을 만들 수 있는지를 확인하고 싶습니다. 만약 "abbac"같은 문자열은 문자들을 "abcba" 로 재 배치하면 팰린드롬을 만들 수 있습니다. 매개변수 s에 문자열이 주어지면 해당 문자열이 재 배치를 통해 팰린드롬을 만들 수 있으면 True를 못 만들면 False를 반환하는 프로그램을 작성하세요. 제한사항: • s의 길이는 1,000을 넘지 않습니다. 나의코드 from collections import Counter def solution(s): CC=Counter(s) cnt=0 for x in CC: if CC[x]%2==1: cnt+=1 return False if cnt > 1 else T..

[해시] -자기분열수

자기 분열수 자기 분열수란 배열의 원소 중 자기 자신의 숫자만큼 빈도수를 갖는 숫자를 의미합니다. 만약 배열이 [1, 2, 3, 1, 3, 3, 2, 4] 라면 1의 빈도수는 2, 2의 빈도수는 2, 3의 빈도수는 3, 4의 빈도수는 1입니다. 여기서 자기 자신의 숫자와 같은 빈도수를 갖는 자기 분열수는 2와 3입니다. 매개변수 nums에 자연수가 원소인 배열이 주어지면 이 배열에서 자기 분열수 중 가장 작은 수를 찾아 반환하는 프로그램을 작성하세요. 자기 분열수가 존재하지 않으면 -1를 반환하세 요. 제한사항: • nums의 길이 3