코드트리: 함수를 이용한 연속부분수열 여부 판단하기

2024. 5. 6. 23:28·PS

 

 


 

문제

n1개의 원소로 이루어져 있는 수열 A의 정보와, n2개의 원소로 이루어져 있는 수열 B의 정보가 주어졌을 때 수열 B가 수열 A의 연속부분수열인지를 판단하는 프로그램을 작성하시오.

 

 

 

 

실행 결과

 

 

 

 

코드(c++)

#include <iostream>
using namespace std;

bool isSubsequence(int arrA[], int a, int arrB[], int b) {
  for (int start = 0; start <= a - b; start++) {
    bool match = true;
    for (int i = 0; i < b; ++i) {
      if (arrA[start + i] != arrB[i]) {
        match = false;
        break;  
      }
    }
    if (match)
      return true;
  }
  return false;
}

int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);

  int a, b;
  cin >> a >> b;  

  int arrA[100], arrB[100]; 

  for (int i = 0; i < a; i++) {
    cin >> arrA[i];
  }
  for (int i = 0; i < b; i++) {
    cin >> arrB[i];
  }

  if (isSubsequence(arrA, a, arrB, b)) {
    cout << "Yes";
  } else {
    cout << "No";
  }

  return 0;
}

 

 

 

 

코드 설명

isSubsequence 함수는 수열 B가 수열 A의 연속 부분수열인지를 판단하는 함수이다.

해당 함수는 이중 반복문을 사용해 B를 ( b - a) - start만큼 비교한다.

  • 시작 인덱스(start)를 선언한다. start가 0에서 a - b 가 될 때까지 B가 A의 연속부분수열로 존재하는지 확인한다.
  • B는 A의 부분 수열이므로 B의 모든 원소가 A의 해당 위치의 원소와 일치하는지 확인한다.
  • 만약 모든 원소가 일치한다면(arrA[start + i] == arrB[i]), true를 리턴한다.
  • 그렇지 않다면(arrA[start + i] != arrB[i]), 반복문에서 빠져나와 false를 반환한다.

 


 

문제 출처:

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

저작자표시 (새창열림)

'PS' 카테고리의 다른 글

코드트리: 재귀함수의 꽃  (0) 2024.05.18
코드트리: 2개 이상의 알파벳  (0) 2024.05.11
백준 2869번: 달팽이는 올라가고 싶다  (0) 2024.05.03
백준 1259번: 팰린드롬수  (0) 2024.04.29
코드트리: 최대공약수와 최소공배수  (0) 2024.04.28
'PS' 카테고리의 다른 글
  • 코드트리: 재귀함수의 꽃
  • 코드트리: 2개 이상의 알파벳
  • 백준 2869번: 달팽이는 올라가고 싶다
  • 백준 1259번: 팰린드롬수
abyss-s
abyss-s
프론트엔드 공부합니다.
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • Web (16)
        • JavaScript (6)
        • TypeScript (1)
        • React (5)
        • Vue (0)
        • Storybook (1)
        • Next.js (1)
      • Backend & Infra (8)
        • Database (3)
        • Node.js (2)
        • SpringBoot (1)
      • PS (71)
      • CS (30)
        • OS (13)
        • Structure & Algorithm (5)
        • Network (10)
        • 정보처리기사 (2)
      • Language (18)
        • OOP (1)
        • JAVA (13)
        • C++ (4)
      • Activities (12)
        • 멋쟁이 사자처럼 (2)
        • OSSCA (3)
        • LG U+ URECA (3)
        • Project (2)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • IT (4)
      • Statistics (11)
      • Book (4)
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
    • 백준
    • 트위터
  • 공지사항

    • abyss-s의 티스토리에 오신 것을 환영합니다.
  • 인기 글

  • 태그

    그리디
    자바기반응용프로그래밍
    github
    C++
    Python
    BFS
    자바스크립트
    BAEKJOON
    React
    DP
    Java
    코드트리
    파이썬
    운영체제
    OS
    네트워크
    생활코딩
    백준
    JavaScript
    통계학
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
abyss-s
코드트리: 함수를 이용한 연속부분수열 여부 판단하기
상단으로

티스토리툴바