프로그래머스

[프로그래머스] 프로그래머스 Level1 같은 숫자는 싫어 C++

2022. 5. 19. 14:03
목차
  1. 문제
  2. 풀이
  3. 코드

문제

https://programmers.co.kr/learn/courses/30/lessons/12906

 

코딩테스트 연습 - 같은 숫자는 싫어

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은

programmers.co.kr

풀이

문제를 풀기위한 알고리즘은 따로 필요없었고 구현으로 풀 수 있었다.

문제 자체는 되게 쉬워보였지만 풀다보면 좀 까다로운 조건 처리가 필요함을 알 수 있을 것이다.

for문으로 arr의 마지막원소 이전까지 모든 원소에 대해 앞뒤가 같은지 판단했고, 같다면 다시 while 루프를 통해 앞뒤 원소가 같지 않은 인덱스를 발견할때까지 탐색을 해주었다. 앞뒤 원소가 같지 않은 인덱스를 만나면 for문의 기준점을 그 인덱스로 교체해주었고, 탐색의 시작점을 answer에 넣어주었다.

처음부터 탐색을 진행할 수 없이 앞뒤 원소가 다르다면 바로 answer에 넣어주고 다시 for문을 돌려주면 된다.

또한 처음 for문에 범위를 잡을때 마지막 원소 이전까지라는 범위를 잡았으므로 따로 마지막 원소의 값이 뒤의 원소와 다르다면 answer에 또 넣어주는 조건 처리가 필요하다. 만약 마지막 원소의 값이 이전의 원소와 같다면 이미 그 값은 answer에 들어가있기 때문에 넣어 줄 필요가 없다.

 

코드

#include <vector>

using namespace std;

vector<int> solution(vector<int> arr)
{
    vector<int> answer;

    if (arr.size() == 1)
    {
        answer.push_back(arr[0]);
        return answer;
    }

    for (int i = 0; i < arr.size() - 1; i++)
    {
        if (arr[i] == arr[i + 1])
        {
            int idx = i;
            while (true)
            {
                if (arr[idx] != arr[idx + 1])
                {
                    break;
                }
                else
                {
                    idx++;
                }
            }
            answer.push_back(arr[idx]);
            i = idx;
        }
        else
        {
            answer.push_back(arr[i]);
        }

        if (i + 1 == arr.size() - 1)
        {
            if (arr[i + 1] != arr[i])
            {
                answer.push_back(arr[i + 1]);
            }
        }
    }

    return answer;
}
저작자표시 비영리 동일조건 (새창열림)

'프로그래머스' 카테고리의 다른 글

[프로그래머스] 프로그래머스 Level1 폰켓몬 C++  (0) 2022.05.19
[프로그래머스] 프로그래머스 Level1 소수 찾기 C++  (0) 2022.05.19
[프로그래머스] 프로그래머스 Level2 땅따먹기 Java  (0) 2022.05.18
[프로그래머스] 프로그래머스 Level2 최솟값 만들기 Java  (0) 2022.05.18
[프로그래머스] 프로그래머스 Level1 [1차] 비밀지도 Java (카카오 코딩테스트)  (0) 2022.05.12
  1. 문제
  2. 풀이
  3. 코드
'프로그래머스' 카테고리의 다른 글
  • [프로그래머스] 프로그래머스 Level1 폰켓몬 C++
  • [프로그래머스] 프로그래머스 Level1 소수 찾기 C++
  • [프로그래머스] 프로그래머스 Level2 땅따먹기 Java
  • [프로그래머스] 프로그래머스 Level2 최솟값 만들기 Java
Doshisha
Doshisha
Doshisha
Doshisha
Doshisha
전체
오늘
어제
  • 분류 전체보기
    • Java
    • Spring
    • Project
      • Gameple
      • 피파온라인 검색 사이트
    • Node.js
    • DBMS
      • MySQL
      • MSSQL
    • AWS
    • BOJ
    • 프로그래머스
    • 프로그래머스-SQL
    • 컴퓨터 구조
    • 네트워크
    • Git
    • IDE
    • 후기 및 회고
    • 기타
    • Linux
    • Frontend
      • Vue.js
      • jQuery
      • JavaScript
    • Unity
    • WAS
      • Tomcat
    • Jenkins

블로그 메뉴

  • 방명록
  • Github

공지사항

인기 글

태그

  • 네트워크
  • 카카오
  • Spring Data JPA
  • 카카오 코딩테스트
  • 프로그래머스
  • 백트래킹
  • boj
  • 게임 API 연동
  • 백준
  • 모두의 네트워크
  • 게임 플랫폼 개발
  • 자바
  • DP
  • 코테
  • java
  • C++ BFS
  • 구현
  • 넥슨 오픈 API
  • MySQL
  • mysql 서브쿼리
  • SpringBoot Jenkins
  • BFS
  • 프로그래머스 SQL
  • Gameple
  • 게임 플랫폼
  • SpringBoot Jenkins CI/CD
  • 일본
  • 카카오 코테
  • c++
  • 문자열

최근 댓글

최근 글

hELLO · Designed By 정상우.
Doshisha
[프로그래머스] 프로그래머스 Level1 같은 숫자는 싫어 C++
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.