[코딩 테스트] 소프티어(Softeer) 연습 문제 - 비밀 메뉴

2023. 2. 14. 22:25·개발/자료구조, 알고리즘
반응형

코딩 테스트를 위한 소프트어(Softeer) 연습 문제 중 비밀 메뉴 문제를 풀어보고 리뷰해 본다.

 

연습 문제 - 비밀 메뉴

  • 난이도 : level 2
  • 정답률 : 54%

https://softeer.ai/practice/info.do?idx=1&eid=623&sw_prbl_sbms_sn=146427 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

 

문제 해설

비밀 메뉴가 존재한다. 비밀 메뉴의 패턴이 입력되고 사용자가 입력한 패턴이 입력된다. 사용자 입력 패턴 중에 비밀 메뉴의 패턴이 있는지 확인하고 있으면 secret을 아니면 normal을 출력하는 문제이다.

즉 두 세트의 배열이 존재하고 두 배열이 매칭이 되는 부분이 있는지 찾는 문제이다. 얼핏 보면 간단하지만 2개의 for 문을 index를 잘 설정하면서 조건에 맞게 찾아가는 게 중요하다. 나는 간단히 배열 2개를 선언하고 2중 for문을 돌면서 조건에 맞으면 break 하도록 구현했다.

 

제약조건

1 ≤ K ≤ 9

1 ≤ M ≤ 100

1 ≤ N ≤ 100

각 버튼의 번호는 1 이상 K 이하이다.


 

입력

3 10 5
1 4 5
3 3 1 2 4 1 4 5 1 4

 

출력

secret
 

위 예제에서 비밀 메뉴 1 4 5의 패턴이 아래 유저 입력 중에 3 3 1 2 4 <1 4 5> 1 4 속해 있으므로 secret이 출력되었다.

 

코드

#include<iostream>
#include<string>

using namespace std;
#define MAX_N 100
#define MAX_M 100
#define MAK_K 9
int secret[MAX_M];
int input[MAX_N];

bool match(int i, int m) {
	int k = 0;
	for (k = 0; k < m; k++) {
		if (secret[k] != input[i + k]) break;
	}
	if (k == m) return true;
	else return false;

}
int main(int argc, char** argv)
{
	int K, N, M;
	string s = "secret";
	string n = "normal";
	string result = n;
	

	cin >> M >> N >> K;
	for (int i = 0; i < M; i++) {
		cin >> secret[i];
	}
	for (int i = 0; i < N; i++) {
		cin >> input[i];
	}
	if (M <= N) {
		for (int i = 0; i < N; i++) {
			int k = 0;
			bool test = true;
			for (int j = i; j < i + M; j++) {
				if (secret[k] != input[j]) {
					test = false;
					break;
				}
				k++;
			}
			if (test) {
				result = s;
				break;
			}
		}
	}


	cout << result;


	return 0;
}

 

결론

조금 쉽게 생각해서 함수를 사용하는 다른 방식으로 구현했다가 결국 index나 결과 처리하는 부분이 헷갈려서 2중 for문으로 한눈에 처리할 수 있도록 구현했다. 처음부터 M과 N을 구분하는 것이 개수가 커졌을 때 최적화하는 포인트였고 조금 더 개선한다면 함수로 빼내어서 가독성 있게 처리하는 것이 좋을 것 같다.

저작자표시 비영리 변경금지 (새창열림)

'개발 > 자료구조, 알고리즘' 카테고리의 다른 글

[코딩 테스트] 소프티어(Softeer) 연습 문제 - 전광판  (0) 2023.02.16
[코딩 테스트] 소프티어(Softeer) 연습 문제 - 지도 자동 구축  (1) 2023.02.15
[코딩 테스트] 소프티어(Softeer) 연습 문제 - GBC  (0) 2023.02.13
[코딩 테스트] 소프티어(Softeer) 연습 문제 - 근무 시간  (1) 2023.02.10
[코딩 테스트] 소프티어(Softeer) 연습 문제 - 주행거리 비교하기  (0) 2023.02.10
'개발/자료구조, 알고리즘' 카테고리의 다른 글
  • [코딩 테스트] 소프티어(Softeer) 연습 문제 - 전광판
  • [코딩 테스트] 소프티어(Softeer) 연습 문제 - 지도 자동 구축
  • [코딩 테스트] 소프티어(Softeer) 연습 문제 - GBC
  • [코딩 테스트] 소프티어(Softeer) 연습 문제 - 근무 시간
growing-dev
growing-dev
S/W 개발 관련 내용들과 취미나 육아, 맛집 등 관심 있는 내용을 공유하는 블로그입니다.
    반응형
  • growing-dev
    성장하는 개발자 블로그
    growing-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 개발
        • 개발 공통
        • 개발 환경
        • Git
        • 자료구조, 알고리즘
        • C, C++
        • Python
        • DevOps
        • CMake
      • 공부
        • 영어
        • 경제
      • 취미, 육아 N
        • 육아
      • 생활정보
  • 블로그 메뉴

    • 홈
  • 링크

    • growing-dev GitHub
  • 공지사항

    • [블로그 시작] 성장하는 개발자 스토리입니다.
  • 인기 글

  • 태그

    소프티어
    C++
    TDD
    dfs
    필스너
    키즈카페
    git
    티스토리챌린지
    WSL
    오블완
    하이볼
    OPIC
    오픽
    생산성
    Python
    앨리웨이
    Clang
    프로그래머스
    VS Code
    CMake
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
growing-dev
[코딩 테스트] 소프티어(Softeer) 연습 문제 - 비밀 메뉴
상단으로

티스토리툴바