개발일기/알고리즘

[Java] 나만의 프로그래머스 정리

징구짱 2023. 2. 18. 00:58
728x90

알고리즘을 처음 풀어보았는데 수학과 비슷한 부분들이 많아서 재미있었다.

마치 수학 문제를 푸는것 같은 느낌...

수학도 공식이 필요한것 처럼 알고리즘을 푸는데도 여러가지 필요한 부분이 있었다.

그 부분을 정리해볼 예정이다!

 

 

별 찍기 문제

for문을 돌려도 되지만 .repeat()으로 편하게 표현 가능

 

for문일 때

int a = 5, b = 3;
for (int i = 0; i < b; i++){
    for (int j = 0; j < a; j++){
        System.out.print("*");
    }
    System.out.println("");
}

 

이렇게 표현 가능

int a = 5, b = 3;
for (int i = 0; i < b; i++) System.out.println(("*").repeat(a));

 

 

if / else 문은 삼항연산자로 간단하게 사용 가능

if와 else문으로 나눠 변수에 넣어야하는 방법

int num = 3;
String answer = "";
if (num % 2 == 0) answer = "Even";
else answer = "Odd";
System.out.println(answer);

 

삼항연산자 사용 방법

int num = 3;
System.out.println(num % 2 == 0 ? "Even" : "Odd");

 

 

문자열 쪼개는 것은 Substring 사용으로 편하게 표현 가능
String s = "abcde";
char[] sArray = s.toCharArray();
int i = s.length();

System.out.println(i % 2 == 1 ? "" + sArray[i/2] : s.substring(i/2-1, i/2+1));

 

 

int로 형변환하는 법
System.out.println(Integer.parseInt(s));

 

 

int를 char로 변환하는 법
  char answer = Character.forDigit(c , 10);	// 10진수 char변환

 

 

평균 구하기
int[] arr = {1,2,3,4};  // 2.5
double answer = 0;

int i = 0;
for (; i < arr.length; i++) answer += arr[i];
answer/=i;

System.out.println(answer);
int[] arr = {1,2,3,4};  // 2.5
double answer = 0;

// 둘 다 사용 가능
System.out.println(Arrays.stream(arr).average().orElse(0));
System.out.println(Arrays.stream(arr).average().getAsDouble());

 

 

최소값 / 최대값  구하기
int iMin = Arrays.stream(arr).min().getAsInt();
int iMax = Arrays.stream(arr).max().getAsInt();

 

 

정렬 (오름차순 / 내림차순)
// 오름차순
Arrays.sort(arr);

// 내림차순
Integer[] nums = {1,2,3,4};
Arrays.sort(nums, Collections.reverseOrder());     // Arrays, Collections import 해야함

 

 

문자열 소문자, 대문자 반환
String lower = s.toLowerCase();
// 문자열을 소문자로 반환한다.
String upper = s.toUpperCase();
// 문자열을 대문자로 반환한다.

 

 

오류상황

세미콜론(;) 확인하기

자주 빼먹으니 확인!

 

 

제출시 한두개만 틀린다면 제한 조건을 확인하자. (아닐 경우도 있음)

제한 조건에 따라 변수 선언과 형 변환에 주의

long[] answer = new long[n];
for (int i = 0; i < n; i++){
    answer[i] = (long)x * (i+1);
}

 

 

배열 오류

이런 오류는 배열의 length를 확인하고 index가 맞게 설정되었는지 확인한다.

 

 

코드 실행시 잘 되는데 제출만 하면 다 실패

조건 전제를 만족하지 않을 경우가 많음 다시 천천히 읽어보기

728x90