Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- [파이썬 실습] 기초 문제
- 자바스크립트
- 자바스크립트 split()
- 자바스크립트 reduce()
- 프론트개발공부
- 코드스테이츠
- 부트캠프
- 자바스크립트 날씨 웹 만들기
- reactnativecli
- HTML
- 코딩부트캠프
- [파이썬 실습] 심화 문제
- 삼항연산자
- 프론트개발
- 간단한 날씨 웹 만들기
- JavaScript
- leetcode
- 엘리스 AI 트랙 5기
- 개발일기
- 프로그래머스
- RN 프로젝트
- 자바스크립트 sort()
- [파이썬 실습] 중급 문제
- 엘리스
- [AI 5기] 연습 문제집
- 날씨 웹 만들기
- 개발공부
- 엘리스 ai 트랙
- 리트코드
- 자바스크립트 날씨
Archives
- Today
- Total
개발조각
[프로그래머스] 같은 숫자는 싫어 본문
728x90
반응형
2021.12.28에 푼 문제입니다.
오랜만에 프로그래머스 연습문제 해결방안을 올리게 됐어요.
이렇게 오랫동안 안 올릴 생각은 아니었는데...
[1차] 다트 게임이 몇 주째 안 풀려서 결국 다른 문제를 풀게 됐어요.😭
같은 숫자는 싫어 문제는 어떻게 보면 쉽긴 한데 묘하게 머리 쓰게 만드는 문제인 것 같아요.
이문제가 단순하게 중복을 제거하는 문제가 아니라 연속적인 부분만 제거하는 문제라 조금 까다롭더라고요.
해결방안
function solution(arr)
{
var answer = [];
for(let i=0; i<arr.length; i++){
if(arr[i] == arr[i+1]){
continue;
}else{
answer.push(arr[i])
}
}
return answer;
}
이 문제는 해결하기 위해 for문과 조건문을 사용해 주었습니다.
간단하게 설명하자면
- for문으로 돌려서 배열의 원소가 뭔지 알아내고
- 현재 원소와 그 다음번의 원소가 같으면 연속적으로 나타내는 숫자임으로 다음으로 넘기고
- 현재원소와 그 다음번의 원소가 같지 않으면 answer배열에 담아 주었습니다.
이것을 코드로 나타내면
- for(let i=0; i<arr.length; i++)
- if(arr[i] == arr[i+1]){continue;}
- if(arr[i] == arr[i+1]){answer.push(arr[i])}
이렇게 됩니다.
여기서 2번에서 "다음으로 넘긴다"라는 말은
테스트 1로 설명하자면 (arr = [1,1,3,3,0,1,1])
i = 0 일 때
- arr[0] === arr[0+1] -> true
arr[i] == arr[i+1]가 true이기 때문에 continue를 진행하게 됩니다.
"continue을 만나면 i=0은 끝내고 i=1를 진행하면 된다"는 말이 됩니다.
테스트 1
arr = [1,1,3,3,0,1,1]
i = 0 일 때
arr[0] === arr[0+1] -> arr[0] === arr[1] -> 1 === 1 -> true
true임으로 continue진행
i = 1 일 때
arr[1] === arr[1+1] -> arr[1] === arr[2] -> 1 === 3 -> false
false임으로 answer.push(arr[i]) 진행
answer.push(arr[i]) -> answer.push(arr[1]) -> answer.push(1)
answer = [1]
i = 2 일 때
arr[2] === arr[2+1] -> arr[2] === arr[3] -> 3 === 3 -> true
true임으로 continue진행
i = 3 일 때
arr[3] === arr[3+1] -> arr[3] === arr[4] -> 3 === 0 -> false
false임으로 answer.push(arr[i]) 진행
answer.push(arr[i]) -> answer.push(arr[3]) -> answer.push(3)
answer = [1, 3]
i = 4 일 때
arr[4] === arr[4+1] -> arr[4] === arr[5] -> 0 === 1 -> false
false임으로 answer.push(arr[i]) 진행
answer.push(arr[i]) -> answer.push(arr[4]) -> answer.push(0)
answer = [1, 3, 0]
i = 5 일 때
arr[5] === arr[5+1] -> arr[5] === arr[6] -> 1 === 1 -> true
true임으로 continue진행
i = 6 일 때
arr[6] === arr[6+1] -> arr[6] === arr[7] -> 1 === undefined -> false
false임으로 answer.push(arr[i]) 진행
answer.push(arr[i]) -> answer.push(arr[6]) -> answer.push(1)
answer = [1, 3, 0, 1]
여기까지 프로그래머스 같은 숫자는 싫어 해결방안에 대해 설명해보았습니다.
728x90
반응형
'알고리즘🅰 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 두 정수 사이의 합 (0) | 2022.02.17 |
---|---|
[프로그래머스] 나누어 떨어지는 숫자 배열 (0) | 2022.02.17 |
[프로그래머스] 가운데 글자 가져오기 (0) | 2022.02.16 |
[프로그래머스] 비밀지도 (0) | 2022.02.16 |
[프로그래머스] 나머지가 1이 되는 수 찾기 (0) | 2022.02.15 |
Comments