class Solution {
public int solution(int n, int m, int[] section) {
int answer = 1;
int temp = section[0] + m;
//작은 번호부터 m까지 1번으로 해결 가능.
for(int i=1; i<section.length; i++){
if(section[i] >= temp){
answer++;
temp = section[i] + m;
}
}
return answer;
}
}
: 어우 핵구림... 내 코드 냄새남.
갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었지만, 나는 입사 못할 듯ㅋㅋㅋ큐ㅠㅠ
처음 짤 때, 10점인 경우를 생각을 못했다.
10점인 경우 고려했더니 코드가 너무 지저분해짐.
import java.util.*;
class Solution {
public int solution(String dartResult) {
int answer = 0;
//숫자가 나올때마다 끊어서 리스트에 담기
List<String> list = new ArrayList<>();
while(dartResult.length()>0){
int len = dartResult.length();
for(int i=2; i<len; i++){
if(Character.isDigit(dartResult.charAt(i))){
list.add(dartResult.substring(0, i));
dartResult = dartResult.substring(i);
break;
}
}
if(dartResult.length()==2 || dartResult.length()==3 || (dartResult.startsWith("10") && dartResult.length()==4)){
list.add(dartResult);
break;
}
}
//각 회차의 계산된 점수를 담을 배열
int[] points = new int[3];
//점수 계산하기
for(int i=0; i<3; i++){
String str = list.get(i);
String[] arr;
if(str.startsWith("10") && str.length()==3){
arr = new String[2];
arr[0] = "10";
arr[1] = str.substring(2);
} else if(str.startsWith("10") && str.length()==4){
arr = new String[2];
arr[0] = "10";
arr[1] = str.substring(2,3);
arr[2] = str.substring(3);
} else {
arr = str.split("");
}
int temp = Integer.parseInt(arr[0]);
if(arr[1].equals("D")){
temp *= temp;
} else if(arr[1].equals("T")){
temp = temp * temp * temp;
}
if(arr.length==3){
if(arr[2].equals("*")){
if(i!=0){
points[i-1] *= 2;
}
temp *= 2;
} else if(arr[2].equals("#")){
temp *= -1;
}
}
points[i] = temp;
}
return points[0]+points[1]+points[2];
}
}
: 스택/큐 문제라고 써있었지만, 그냥 이중 for문으로 해결 가능.
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
for(int i=0; i<prices.length; i++){
int temp = 0;
for(int j=i+1; j<prices.length; j++){
if(prices[i]<=prices[j]){
temp++;
} else {
temp++;
break;
}
}
answer[i] = temp;
}
return answer;
}
}
주석
환경
함수
일반
자바
이름
테스트
프로그래머스 코테 문제는 특수 자료구조/알고리즘(DP, DFS, BFS, 그래프 등) 공부하기 싫어서 일반 구현 문제만 푸는 중,,,ㅎ
내일부터는 도전해봐야겠다. 성장해야지~!
책 <클린 코드> 15,16장은 리팩토링하는 과정을 보여주는 것이 대부분이었다.
17장은 어떤 코드가 냄새가 나는지 정리해서 보여줌.
이제 부록에 나온 코드를 보면 책이 끝난다.
처음부터 끝까지 일관된 주장을 해서 생각보다 어렵지는 않았다.
물론 직접 구현하려고 하면 어렵겠지만.
테스트가 너무 중요해서 개인 프로젝트에서는 이 부분을 꼭 신경써야겠다고 생각하고 있다.