본문 바로가기
프로그래머스/프로그래머스 Lv0

Lv0 배열 만들기6

by 독기품기 2024. 7. 2.

https://school.programmers.co.kr/learn/courses/30/lessons/181859

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

이 문제는 문제에서 주어지는 조건에 맞게 차례대로 코드를 작성해 나가면 된다. 

문제에서 주어진 조건을 살펴보면

1) "0과 1로만 이루어진 정수 배열 arr가 주어집니다. arr를 이용해 새로운 배열 stk을 만드려고 합니다.

i의 초기값을 0으로 설정하고 i가 arr의 길이보다 작으면 다음을 반복합니다.

 

2) 만약 stk이 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더합니다.

3) stk에 원소가 있고, stk의 마지막 원소가 arr[i]와 같으면 stk의 마지막 원소를 stk에서 제거하고 i에 1을 더합니다.

4) stk에 원소가 있는데 stk의 마지막 원소가 arr[i]와 다르면 stk의 맨 마지막에 arr[i]를 추가하고 i에 1을 더합니다.

 

단, 만약 빈 배열을 return 해야한다면 [-1]을 return 합니다"이다.

1)의 조건을 토대로 새로운 배열 answer = []을 선언하고 i의 초기값을 0으로 만든 후 i가 arr의 길이보다 작으면 2),3),4) 조건을 반복해야 하기때문에 while i < len(arr)를 해준다.

그 후에 2) 조건을 토대로 새로운 배열에 아무 원소가 없다면 새로운 배열에 arr[i]를 추가하고 i에 1를 더하라 했으니 len(answer) == 0 일 때 answer.append(arr[i])를 해준 후 i+=1를 해주면 된다. 

3)의 조건을 보면 answer 배열에 원소가 있고 answer의 마지막 원소가 arr[i]와 같다면 answer 마지막 원소를 제거하고 i에 1를 더하라고 되어있으니 elif len(answer) != 0 and arr[i] == anwer[-1]를 해주고 이 조건에 부합하면 answer.pop()를 해준 후 i += 1를 해주면 된다.

4)의 조건을 토대로 elif문을 작성하게 되면 elif len(answer) != 0 and arr[i] != answer[-1] 후에 answer.append(arr[i])와 i += 1해주면 된다.

문제에서 배열이 비어있으면 [-1]를 return하라고 했기 때문에 if len(answer) == 0을 해주고 조건에 부합하면 return [-1]을 해주고 아니라면 return answer를 해주면 된다.

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

Lv0 왼쪽 오른쪽  (0) 2024.07.02
Lv0 문자열 계산하기  (0) 2024.07.02
Lv0 문자 개수 세기  (0) 2024.07.01
Lv0 잘라서 배열로 저장하기  (0) 2024.07.01
Lv0 [PCCE 기출 문제] 5번 / 산책  (0) 2024.07.01