hyeon.s
개발로그
hyeon.s
전체 방문자
오늘
어제
  • 분류 전체보기 (150)
    • Web 및 인프라 (1)
      • Web (1)
      • Terraform (2)
      • Docker (1)
    • Android (1)
      • 공부 (28)
      • 트러블슈팅 (12)
      • 프로젝트 개발 (10)
      • Compose (2)
      • 우테코 프리코스 (0)
    • Server (5)
      • 공부 (1)
      • Spring (4)
    • 알고리즘 (68)
      • 문제풀이 (C++,Kotlin) (54)
      • 공부 (13)
    • 디자인 (3)
      • UI (3)
    • Language (5)
      • Kotlin (5)
      • JAVA (0)
    • IT 동아리 (8)
      • UMC 3기 (Android) (7)
      • Sopt 32기 (Android) (1)

Github

글쓰기 / 관리자
hELLO · Designed By 정상우.
hyeon.s

개발로그

[CodeTree/C++] 행복한 수열의 개수 : 시뮬레이션
알고리즘/문제풀이 (C++,Kotlin)

[CodeTree/C++] 행복한 수열의 개수 : 시뮬레이션

2024. 2. 9. 02:15
728x90

문제 설명

1이상 100이하의 숫자로만 이루어져 있는 n * n 크기의 격자 정보가 주어집니다.

이때 행복한 수열이라는 것은 다음과 같이 정의됩니다.

  • 행복한 수열 = 연속하여 m개 이상의 동일한 원소가 나오는 순간이 존재하는 수열

n * n 크기의 격자 정보가 주어졌을 때 각 행마다 봤을 때 나오는 n개의 수열과, 각 열마다 봤을 때 나올 수 있는 n개의 수열을 포함하여 총 2n개의 수열 중 행복한 수열의 개수를 세서 출력하는 프로그램을 작성해보세요.

입력 형식

첫 번째 줄에는 격자의 크기를 나타내는 n과 연속해야 하는 숫자의 수를 나타내는 m이 공백을 사이에 두고 주어집니다.

두 번째 줄부터는 n개의 줄에 걸쳐 격자에 대한 정보가 주어집니다. 각 줄에는 각각의 행에 대한 정보가 주어지며, 이 정보는 1이상 100이하의 숫자가 각각 공백을 사이에 두고 주어집니다.

  • 1 ≤ m ≤ n ≤ 100

출력 형식

2n개의 수열들 중 행복한 수열의 수를 출력해주세요.

코드

정답코드

#include <iostream>
using namespace std;

int arr[101][101] = {};

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> arr[i][j];
        }
    }

    int cnt = 1;
    int ans = 0;
    int stn;

    for (int i = 0; i < n; i++) {
        cnt = 1;
        for (int j = 0; j < n; j++) {
            if (j == 0) {
                stn = arr[i][j];
            }
            else {
                if (stn == arr[i][j]) {
                    cnt++;
                }
                else {
                    cnt = 1;
                    stn = arr[i][j];
                }
            }
            if (cnt == m) {
                ans++;
                break;
            }
        }
    }

    int stnCol;
    for (int i = 0; i < n; i++) {
        cnt = 1;
        for (int j = 0; j < n; j++) {
            if (j == 0) {
                stnCol = arr[j][i];
            }
            else {
                if (stnCol == arr[j][i]) {
                    cnt++;
                }
                else {
                    stnCol = arr[j][i];
                    cnt = 1;
                }

            }
            if (cnt == m) {
                ans++;
                break;
            }
        }
    }

    cout << ans << "\n";
}​

참고블로그

#1 틀린 시도 코드

#include <iostream>
using namespace std;

int arr[101][101] = {};

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> arr[i][j];
        }
    }

    int cnt = 1;
    int ans = 0;

    for (int i = 0; i < n; i++) {
        int stn = arr[i][0];
        for (int j = 0; j < n-1; j++) {
            if (arr[i][j] == arr[i][j + 1]) {
                stn = arr[i][j];
                cnt++;
            }
            else {
                stn = arr[i][j + 1];
                cnt = 1;
            }
        }
        if (cnt == m) {
            ans++;
        }
    }
728x90
저작자표시 (새창열림)

'알고리즘 > 문제풀이 (C++,Kotlin)' 카테고리의 다른 글

[프로그래머스/Kotlin] Lv2 튜플  (1) 2024.11.05
[CodeTree/C++] 최고의 33위치 : 시뮬레이션  (0) 2024.02.02
[BOJ/C++] 1946번 : 그리디  (0) 2024.01.31
[BOJ/Kotlin] 2240번 자두나무 : DP  (0) 2023.11.14
[BOJ/Kotlin] 11659번 구간 합 구하기 4 : 누적합  (0) 2023.09.20
'알고리즘/문제풀이 (C++,Kotlin)' 카테고리의 다른 글
  • [프로그래머스/Kotlin] Lv2 튜플
  • [CodeTree/C++] 최고의 33위치 : 시뮬레이션
  • [BOJ/C++] 1946번 : 그리디
  • [BOJ/Kotlin] 2240번 자두나무 : DP
hyeon.s
hyeon.s
이유있는 코드를 짜자

티스토리툴바