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
- #프로그래머스 #코딩 #자바 #수열과구간쿼리3
- #프로그래머스 #코딩 #순서바꾸기
- #프로그래머스 #자바 #코딩 #특정문자열로끝나는가장긴부분문자열찾기
- #JSP #Servlet #제이에스피 #서블릿 #필터 #Filter @WebFilter #어노테이션필터
- #프로그래머스 #코딩 #배열원소 삭제하기
- #프로그래머스 #코딩 #자바 #빈배열에추가삭제하기
- #프로그래머스 #자바 #코딩 #전국대회선발
- #JSP #Servlet #Ajax #에이젝스 #HTML #success #.HTML() #HTML로붙이기
- #프로그래머스 #코딩 #자바 #리스트자르기
- #프로그래머스 #코딩 #자바 #문자열묶기
- #프로그래머스 #코딩 #자바 #수열과구간쿼리2
- #프로그래머스 #코딩 #l로만들기
- #프로그래머스 #코딩 #자바 #문자열여러번뒤집기
- #프로그래머스 #코딩 #자바 #왼쪽오른쪽
- #프로그래머스
- #프로그래머스 #코딩 #자바 #문자열이몇번등장하는지세기
- #프로그래머스 #코딩 #문자열잘라서정렬하기
- #프로그래머스 #코딩 #배열만들기3
- #프로그래머스 #코딩 #x사이의개수
- #git #commit #message #깃커밋 #메시지 #gitmessage #누락 #reset #mixed #마지막커밋정정하기
- #프로그래머스 #코딩 #자바 #2의영역
- #JSP #Servlet #제이에스피 #서블릿 #필터 #filter #web.xml #필터예제 #filter예제
- 코딩 #자바 #조건에맞게수열변환하기2
- #프로그래머스 #코딩 #배열비교하기
- #프로그래머스 #자바 #코딩 #무작위로k개의수뽑기
- #프로그래머스 #코딩 #글자지우기 #자바
- #프로그래머스 #코딩 #자바 #수열과구간쿼리1
- #프로그래머스 #코딩 #배열의길이에따라다른연산하기
- #프로그래머스 #코딩 #문자열뒤집기 #자바
- #프로그래머스 #자바 #코딩 #배열만들기2
Archives
- Today
- Total
David의 블로그
프로그래머스 - 빈 배열에 추가, 삭제하기 본문
문제 설명>
아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 길이가 같은 정수 배열 arr과 boolean 배열 flag가 매개변수로 주어질 때, flag를 차례대로 순회하며 flag[i]가 true라면 X의 뒤에 arr[i]를 arr[i] × 2 번 추가하고,
flag[i]가 false라면 X에서 마지막 arr[i]개의 원소를 제거한 뒤 X를 return 하는 solution 함수를 작성해 주세요
내 생각>
boolean flag[]와 int arr[] 배열들의 길이는 같고, flag[]를 순회하여 arr[]를 가공해야 하니 인덱스는 신경 안 써도 됐다.
true라면 arr[i] * 2돌리면서 증감연산자(+)로 새로운 배열에 넣고, false라면 배열의 끝 인덱스를 구해 증감연산사(-)로 돌렸다.
첫 번째 풀이
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
|
List<Integer> intList = new ArrayList<Integer>();
int loopCnt = 0;
int removeCnt = 0;
for (int i = 0; i < flag.length; i++) {
// true일 때
if (flag[i])
{
loopCnt = arr[i] * 2;
for (int j = 0; j < loopCnt; j++) {
intList.add(arr[i]);
}
}
// false일 때
else
{
// intList에 값이 존재하면,
if (!intList.isEmpty())
{
int removeStrat = intList.size() - 1;
for (int j = removeStrat; j > removeStrat - arr[i]; j--) {
intList.remove(j);
}
}
}
}
answer = intList.stream().mapToInt(i -> i).toArray();
|
cs |
두 번째 풀이>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
for (int i = 0; i < flag.length; i++) {
if (flag[i])
{
for (int j = 0; j < arr[i] * 2; j++) {
intList.add(arr[i]);
}
}
else
{
for (int j = 0; j < arr[i]; j++) {
intList.remove(intList.size() - 1);
}
}
}
answer = intList.stream().mapToInt(i -> i).toArray();
|
cs |
바뀐점은 유효성 체크가 없어졌고, flag[i] false부분에서 for문에 loop관련 연산자가 ++로 바뀌었다는 점과
arr[i]로 바뀌었다는 점이다.
'프로그래밍 > 코딩' 카테고리의 다른 글
프로그래머스 - 문자열 뒤집기 (0) | 2024.06.22 |
---|---|
프로그래머스 - 글자지우기 (0) | 2024.06.22 |
프로그래머스 - 배열 만들기3 (0) | 2024.05.26 |
프로그래머스 - 문자열 잘라서 정렬하기 (0) | 2024.05.26 |
프로그래머스 - x사이의 개수 (0) | 2024.05.26 |