문제 해결 방법은 크게 2가지로 생각이 됐다
<방법1>
spell의 dict를 만들어서 dic와 비교하기
-> bad : 공간 낭비 발생
-> good : 알고리즘이 단순하다
<방법2>
dict의 원소 하나하나를 가지고 spell에 있는 걸로 만들 수 있는지 검사하기
spell 에 담긴 알파벳을 한번씩만 모두 사용한 단어를 모은 spell_dict 만들기
-> good : 연산횟수를 줄일 수 있다(필요한 연산만 가능 & dic의 앞쪽에 원하는 값이 있으면 프로그램 종료 가능)
-> bad : 코드가 조금 복잡해보인다
나는 방법2를 택했다.
def solution(spell, dic):
answer = 2
# spell이 사용된 횟수 확인용 리스트
check = []
char = ''
# 연산 횟수 줄이기 1) dic의 문자열 중 문자 개수가 spell 문자 개수랑 갖지 않으면 패스
for i in range(len(dic)):
if len(dic[i]) == len(spell):
# dic에 있는 문자열의 문자 하나하나를 검사
for j in range(len(dic[i])):
char = dic[i][j]
print(char)
# 문자가 spell에 없으면 패스
if char in spell:
check.append(spell.index(char))
print(check)
else:
break
check.sort()
if check == [i for i in range(0,len(spell))]:
return 1
else:
check = []
else:
continue
return 2
+2 받았다.
너무 절차지향적인 코드 같다.
python 기본 내장 함수를 바로바로 떠올려서 사용하기가 능수능란하지 않다.
'Algorithm > BOJ' 카테고리의 다른 글
| [백준/5597/c++] 과제 안 내신 분..? (0) | 2024.02.10 |
|---|---|
| [백준/27433/c++] 팩토리얼 2 (1) | 2024.02.05 |
| [C/perfect C] 프로젝트 Part 1-05 : 십진수를 이진수, 8진수, 16진수로 변환 (0) | 2023.01.03 |
| [C/perfect C] 프로젝트 Part 1-04 : 소수로 삼각형 만들기 (0) | 2022.12.13 |
| [C/Perfect C] 프로젝트 Part 1-03 : 두 정수 교환의 다양한 방법 (0) | 2022.12.13 |