문제
https://school.programmers.co.kr/learn/courses/30/lessons/134240
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 이해 && 풀이
문제를 이해하는것은 쉽다. 테이블이 있다고 생각하고 칼로리가 낮은 음식(index가 낮은 순서)대로 왼쪽과 오른쪽에 갯수가 똑같이 놓는것이다. 이때 주의할 것은 음식의 갯수가 홀수개라면 하나는 버리고 음식이 대칭이 되게 나둬야하는것이다.
나의 문제 풀이
나는 배열에 각 숫자를 넣고 왼쪽 사람의 테이블에 놓고 그것을 오른쪽부터 다시 정렬한다는 생각으로 만들었지만 좋지 않은 생각이였다. 때문에 코드가 복잡해졌고 0을 수기로 따로 넣어줘야한다는것이 굉장히 맘에 들지 않았다..
다른 사람의 문제 풀이
애초에 정답인 값이 String으로써 거기에 양 끝에 하나씩 놔주면 된다. 굉장히 간단한걸 너무 멀리 돌아서 와버렸다.
테이블에 물이 위치한 곳을 answer라고 두는것이다. 그 양 옆에 값을 하나씩 놓으면 된다.
하지만 중요한것이 있다.
내가 푼 문제의 걸리는 시간
다른 사람이 푼 문제의 걸리는 시간
문제의 풀이 시간이 조금 차이가 난다. 나는 너무 신기해서 왜 그런지 찾아보았다. 그 이유는 다른분이 푼 문제는 문자열의 연산 특성때문에 매 반복마다 문자열을 새로 생성하고 기존의 문자열을 복사하는 과정에서 시간이 오래 걸리게 된다. 이는 문자열의 길이에 비례하며 커지기 때문에 시간복잡도가 굉장히 커진다. 또한 복사하는 작업에도 시간을 쓰게 되는데 ArrayList를 사용하면 배열을 통해 관리를 하기에 따로 복사하는 과정이 없고 새로 생성하는 시간또한 복사가 아닌 추가로써 굉장히 짧아지는 것이다.
'코딩테스트 > 🧮 프로그래머스' 카테고리의 다른 글
🧮 [프로그래머스] 이진 변환 반복하기 (JAVA) (0) | 2023.09.21 |
---|---|
🧮 [프로그래머스] 폰켓몬 (JAVA) (0) | 2023.08.14 |
🧮 [프로그래머스] 1차 비밀지도 (0) | 2023.08.11 |
🧮 [프로그래머스] 예산(JAVA) (0) | 2023.08.06 |
🧮 [프로그래머스] 같은 숫자는 싫어(JAVA) (0) | 2023.08.06 |