한번씩 읽고 가세요.
“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”
- Frederick Philips Brooks
Mythical Man-Month 저자
비슷한 단어 찾아내기
아래와 같은 결과를 출력하는 function을 구현하라
bool OneEditApart(string s1, string s2)
OneEditApart("cat", "dog") = false
OneEditApart("cat", "cats") = true
OneEditApart("cat", "cut") = true
OneEditApart("cat", "cast") = true
OneEditApart("cat", "at") = true
OneEditApart("cat", "acts") = false
한개의 문자를 삽입, 제거, 변환을 했을때 s1, s2가 동일한지를 판별하는 OneEditApart 함수를 작성하시오.
def checkRemoval(s1, s2):
for i in range(len(s1)):
t = s1[:i]+s1[i+1:]
if s2==t: return True
return False
def checkReplace(s1, s2):
for i in range(len(s1)):
t1 = s1[:i]+s1[i+1:]
t2 = s2[:i]+s2[i+1:]
if t1==t2: return True
return False
def OneEditApart(s1, s2):
if len(s1) > len(s2):
return checkRemoval(s1, s2)
elif len(s1) < len(s2):
return checkRemoval(s2, s1)
else:
return checkReplace(s1, s2)
print OneEditApart("cat", "dog")
print OneEditApart("cat", "cats")
print OneEditApart("cat", "cut")
print OneEditApart("cat", "cast")
print OneEditApart("cat", "at")
print OneEditApart("cat", "acts")
- 두 문자열의 길이가 1만큼 차이나는 경우: 한 문자를 삽입 또는 삭제해야 합니다.
- 두 문자열의 길이가 동일한 경우: 한 문자를 교체해야 합니다.
- 두 문자열의 길이가 2 이상 차이나는 경우: 두 문자열은 한 번의 편집으로는 동일하지 않습니다.
checkRemoval 함수는 주어진 문자열에서 한 문자를 제거하여 다른 문자열과 동일한지 여부를 확인합니다. checkReplace 함수는 두 문자열에서 한 문자를 교체하여 동일한지 여부를 확인합니다.
마지막으로, OneEditApart 함수는 주어진 두 문자열의 길이를 비교하여 위의 세 가지 경우에 해당하는 함수를 호출합니다. 반환 값은 해당 조건에 맞는 편집을 수행할 수 있는지 여부를 나타내는 부울 값입니다.
주어진 예제에서 OneEditApart 함수를 호출하고 결과를 출력합니다.
Subdate
두 날짜(YYYYMMDD)의 차이 일수를 구하는 프로그램을 작성하시오.
※ 단, 프로그래밍 언어에서 지원하는 날짜차이를 계산하는 라이브러리는 사용하지 말것
예)
20070515 sub 20070501 = 14
20070501 sub 20070515 = 14
20070301 sub 20070515 = 75
function subdate(date){
년 = parseInt(date.slice(0, 4))
월 = parseInt(date.slice(4, 6))
일 = parseInt(date.slice(6))
console.log(년, 월, 일)
월별일 = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
일수 = 년 * 365 + 일
for(let i=1; i<월;i++){
일수 += 월별일[i]
}
return 일수
}
function solution(a, b){
return Math.abs(subdate(a) - subdate(b))
}
solution('20070515', '20070501') //14
solution('20070301', '20070515') //75
subdate 함수는 입력된 날짜를 연도, 월, 일로 나누어 처리합니다. parseInt 함수를 사용하여 문자열로 표현된 연도, 월, 일을 정수로 변환합니다. 그리고 slice 메서드를 사용하여 각 부분을 추출합니다. 이후 년 변수, 월 변수, 일 변수에 각각 할당됩니다.
함수는 월별일 배열을 생성하여 각 월별 일수를 저장합니다. 해당 월 이전까지의 일 수를 계산하기 위해 일수 변수를 초기화하고, 반복문을 통해 1부터 현재 월까지의 일 수를 더해줍니다.
마지막으로, 일수를 반환합니다.
solution 함수는 주어진 두 날짜 간의 일 수 차이를 계산하기 위해 subdate 함수를 호출한 후, Math.abs 함수를 사용하여 차이값의 절댓값을 반환합니다.
주어진 예제에서 solution 함수를 호출하고 결과를 출력합니다.