Hi, There!
안녕하세요, 바오밥입니다.
목차
- 문제
- 풀이
문제
문제 내용
해밍 거리(Hamming distance)란 같은 길이를 가진 두 개의 문자열에서 같은 위치에 있지만 서로 다른 문자의 개수를 뜻 합니다. 예를 들어 두 2진수 문자열이 "10010"과 "110"이라면, 먼저 두 문자열의 자릿수를 맞추기 위해 "110"의 앞에 0 두 개를 채워 "00110"으로 만들어 줍니다. 두 2진수 문자열은 첫 번째와 세 번째 문자가 서로 다르므로 해밍 거리는 2입니다.
두 2진수 문자열 binaryA, binaryB의 해밍 거리를 구하려 합니다. 이를 위해 다음과 같이 간단히 프로그램 구조를 작성했습니다
- 1단계. 길이가 더 긴 2진수 문자열의 길이를 구합니다.
- 2단계. 첫 번째 2진수 문자열의 길이가 더 짧다면 문자열의 앞에 0을 채워넣어 길이를 맞춰줍니다.
- 3단계. 두 번째 2진수 문자열의 길이가 더 짧다면 문자열의 앞에 0을 채워넣어 길이를 맞춰줍니다.
- 4단계. 길이가 같은 두 2진수 문자열의 해밍 거리를 구합니다.
두 2진수 문자열 binaryA와 binaryB가 매개변수로 주어질 때, 두 2진수의 해밍 거리를 return 하도록 solution 함수를 작 성했습니다. 이때, 위 구조를 참고하여 중복되는 부분은 func_a라는 함수로 작성했습니다. 코드가 올바르게 동작할 수 있도 록 빈칸을 알맞게 채워 전체 코드를 완성해주세요.
매개변수 설명
- binaryA의 길이는 1 이상 10 이하입니다.
- binaryA는 0 또는 1로만 이루어진 문자열이며, 0으로 시작하지 않습니다.
- binaryB의 길이는 1 이상 10 이하입니다.
- binaryB는 0 또는 1로만 이루어진 문자열이며, 0으로 시작하지 않습니다.
return 값 설명
- 두 2진수 문자열의 해밍 거리를 return 해주세요.
예시
예시 설명
- 두 2진수의 자릿수는 각각 5와 3입니다. 자릿수를 맞추기 위해 "110" 앞에 0 두 개를 채워주면 "00110"이 됩니다. 이제 두 2진수 문자열의 해밍 거리를 구하면 다음과 같습니다.
- 위와 같이 첫 번째와 세 번째 문자가 서로 다르므로, 해밍 거리는 2가 됩니다.
풀이
풀이 코드 및 해설
def func_a(string, length):
padZero = ""
padSize = length - len(string)
# max_length - 문자열 길이 => padSize
# padSize란 다른 2진수 문자열의 크기보다 모자른 양
for i in range(padSize):
padZero += "0"
# padSize 만큼 0을 추가
return padZero + string
# 추가한 0을 string 앞에 붙여 반환
def solution(binaryA, binaryB):
# 매개 변수로 binaryA와 binaryB를 전달 받음
max_length = max(len(binaryA), len(binaryB))
# binaryA와 binaryB 중 더 큰 값을 max_length로 저장
binaryA = func_a(binaryA, max_length)
binaryB = func_a(binaryB, max_length)
hamming_distance = 0
for i in range(max_length):
# 모든 이진수의 인덱스를 순회
if binaryA[i] != binaryB[i]:
# 만약 두 이진수의 값이 다른 경우
hamming_distance += 1
# 해밍 거리 값 추가
return hamming_distance
# 해밍 거리 반환
'Certificate > Cert - Cos Pro 1급' 카테고리의 다른 글
[Cos Pro 1급] 기출문제 1회차, 타임머신 (0) | 2021.07.05 |
---|---|
[Cos Pro 1급] 기출문제 1회차, 계산기 by 문자열 (0) | 2021.07.05 |
[Cos Pro 1급] 기출문제 1회차, 음식 전문점 운영 (0) | 2021.07.05 |
[프로그래머스] Cos Pro 1급 모의고사, 단어를 순서대로 적으세요 (0) | 2021.07.02 |
[프로그래머스] Cos Pro 1급 모의고사, 큰 수와 작은 수의 차이 (0) | 2021.07.02 |