알고리즘 문제 풀이를 진행하거나, 블로그에 코드를 작성할 때, 다른 사람들이 보기 좋게 코드를 짜는 방식에 대해 정리해보고자 간단하게 글을 작성하였습니다.
보통 알고리즘 문제를 풀 경우에는 '어차피 알고리즘 문제 푸는데, 풀리기만 하면 되지'라는 생각으로 코드를 정리하지 않고 작성하는 경우가 있습니다.
대회에서는 해당 방식으로 코드를 작성하는 것이 좋을 수 있으나, 일반적인 문제풀이의 경우 프로젝트 하나의 기능에 대하여 코드를 작성한다고 생각하면서 작성하시는 편이 좋습니다.
1. 공백 제거
아주 간단한 방법으로 불필요한 공백을 제거함으로써, 보기 좋은 코드를 만들 수 있습니다.
public class Main {
public static void main(String[] args) {
int a = 1, b = 1;
System.out.print(a + b);
}
}
public class Main {
public static void main(String[] args) {
int a = 1, b = 1;
System.out.print(a + b);
}
}
극단적으로 예시가 표현되어 있지만, 보통의 코드들을 보면 불필요한 공백이 추가되어 있습니다.
물론 예외 케이스로 공백이 필요한 경우도 있습니다.
public class Main {
public static void main(String[] args) {
int a = 1, b = 1;
System.out.print(sum(a, b));
}
public static void sum(int a, int b) {
return a + b;
}
}
이런식으로 함수별로 구분짓는 공백은 필요합니다.
2. 기능 분리
해당 방법에 대한 예시로, 배열의 값들을 모두 더한 후 출력하는 코드를 작성해 보겠습니다.
public class Main {
public static void main(String[] args) {
int[] arr = new int[10];
for(int i = 0; i < 10; i++) {
arr[i] = i;
}
int answer = 0;
for(int i = 0; i < 10; i++) {
answer += sum[i];
}
System.out.print(answer);
}
}
public class Main {
public static void main(String[] args) {
int[] arr = new int[10];
for(int i = 0; i < 10; i++) {
arr[i] = i;
}
int answer = 0;
for(int i = 0; i < 10; i++) {
answer += sum[i];
}
System.out.print(answer);
}
}
변수 선언하는 코드, 값을 입력받는(예시에서는 값을 배열에 넣는) 코드, 값의 합을 더하는 코드, 출력하는 코드
각자 서로 다른 역할을 하기 때문에 서로 분리하는 것이 좋습니다.
3. 함수화
2번에서 기능을 분리하는데, 같은 기능을 여러번 반복해서 수행을 하게 된다면, 무조건적으로 함수를 생성한 이후 활용하는 방식으로 진행하는게 좋습니다.
public class Main {
public static void main(String[] args) {
int[] arr = new int[10], arr2 = new int[10];
for(int i = 0; i < 10; i++) {
arr[i] = i;
arr2[i] = i + 1;
}
System.out.print(sum(arr));
System.out.print(sum(arr2));
}
public static void sum(int[] arr) {
int answer = 0;
for(int i = 0; i < arr.length; i++) {
answer += arr[i];
}
return answer;
}
}
두 개의 배열의 합을 더하는 과정의 경우, 값을 더하는 함수 sum을 하나 만들어 arr과 arr2의 값을 더하는 과정을 하나의 함수를 통해 진행할 수 있습니다.
public class Main {
public static void main(String[] args) {
int[] arr = new int[10][10];
for(int i = 0; i < 10; i++) {
for(int j = 0; j < 10; j++) {
arr[i][j] = i * 10 + j;
}
}
System.out.print(sum(arr) ? "yes" : "no");
}
public static boolean checkNum(int[][] arr) {
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
if(arr[i][j] == 10) {
return true;
}
}
}
return false;
}
}
또 하나의 방법으로 이중 포문을 탈출할 경우에도 함수를 만들어 진행할 수 있습니다.
'잡담' 카테고리의 다른 글
싸피 알고리즘 문제 출제 (0) | 2024.10.17 |
---|---|
SW 개발자 취업&이직 정보 공유 카페 (1) | 2024.08.13 |
2023년 회고 / 2024년 목표 (0) | 2024.01.17 |
2023 브실컵 후기 (0) | 2023.09.10 |
제1회 임스의 메이플컵 (2) | 2023.09.03 |
댓글