R-Blogger블로그·해설한국어2023-10-18
포터만토 단어
Excel BI의 Excel Challenge #308 – R로 해결하기 퍼즐 정의 ExcelBI가 새로 공개한 퍼즐은 여전히 단어의 세계에 초점을 맞추고 있습니다. 단어가 포트맨토(Portmanteau)인지 판단해야 합니다. 포트맨토란 두 개 이상의 근어(root word)의 일부분을 결합해 만들어진 복합 구조를 말합니다. 예를 들어 smog은 smoke와 fog의 결합이죠. 문제 해결 흐름 단어 리스트 준비 – 퍼즐에 주어진 모든 단어를 벡터에 담습니다. 근어 사전 구축 – 사전에서 가능한 모든 근어를 추출해 리스트로 만듭니다. 포트맨토 검사 함수 작성 – is_portmanteau(word, roots) 함수를 구현합니다. 단어를 roots에 있는 근어 조합으로 분해해볼 수 있는지 확인합니다. 두 근어가 단어를 완전히 덮어야 하며, 중복이 없어야 합니다. 퍼즐 적용 – 모든 단어에 대해 검사를 실행하고, 결과를 데이터 프레임에 저장합니다. 정답 확인 – 결과를 Excel BI가 제공한 정답과 비교하여 일치 여부를 확인합니다. 핵심 R 코드 # 근어 사전 로드 roots <- readLines("roots.txt") # 포트맨토 검사 함수 is_portmanteau <- function(word, roots) { for (root1 in roots) { for (root2 in roots) { if (root1 == root2) next if (paste0(root1, root2) == word || paste0(root2, root1) == word) { return(TRUE) } } } return(FALSE) } # 퍼즐 단어 리스트 puzzle_words <- readLines("puzzle_words.txt") # 결과 저장 results <- data.frame(word = puzzle_words, is_portmanteau = sapply(puzzle_words, is_portmanteau, roots = roots), stringsAsFactors = FALSE) # 정답 파일과 비교 expected <- readLines("expected_answers.txt") results$correct <- results$is_portmanteau == as.logical(as.integer(expected)) 마무리 이 과정을 통해 퍼즐에 제시된 모든 단어가 포트맨토인지 여부를 R만으로 정확히 판별할 수 있습니다. Excel BI가 요구한 정확도와 일관성을 모두 만족시킨 뒤, 결과를 제출하면 됩니다. 즐거운 코딩 되세요!
원문 URL
전체 글은 원문 페이지에서 이어서 읽을 수 있습니다.
- 작성자
- R-Blogger
- 출처
- R-Blogger
- 플랫폼
- R-Blogger
- 분류
- 블로그·해설
- 언어
- 한국어
- 발행일
- 2023-10-18