코딩테스트/프로그래머스

외계어 사전 (c++)

shin0112 2024. 1. 20. 20:00

과정

1. spell으로 모든 경우의 수 만들기 → O(n!)

 

2. 삼중 for문으로 해결 → O(n^3)

  • dic 한 번
  • dic[i] 한번
  • spell과 비교

3. set 사용 → O(n^2logn)

  • 중복 확인 안함

4. 중복을 확인할 수 있는 방법 생각..

sol

1. 필요한 벡터 만들기

  • 조건이 되는 알파벳을 확인하는 벡터 - con
  • 이미 중복되었는지 확인하는 벡터 - check

2. 이중 for문 dic[i] → dic[i][j]

  • dic[i][j]의 값으로 con 확인
  • 이미 중복되었는지 확인
  • 위 2가지 조건을 만족하지 않으면 return 2

3. 중복용으로 확인했던 vector check 0으로 초기화

고민

  • 글자 or 숫자의 여부를 확인하는 경우를 찾는 경우에 약한 듯
  • 위에는 중복 여부까지 확인
  • 적절한 벡터를 만들어서 조건을 확인하자
  • 위의 경우에는 1) 찾아야 하는 것 2) 중복 확인
결론
주어진 조건에 맞게 적절한 벡터를 만들어서 논리적인 연결성을 생각해보자

 

shin0112/programmers_cpp: programmers' coding test solutions (github.com)

출처 : 프로그래머스 코딩 테스트 연습 - 외계어 사전
https://school.programmers.co.kr/learn/courses/30/lessons/120869