TIL ~ 2022-04-10 일

그린·2022년 4월 9일
0

TIL

목록 보기
26/47

1. 학습한 내용

백준
자료구조(배열) 1546,4344번
브루트포스 1018,4673번
구현(+문자열) 8958번

2. 알게 된 내용

자바에서 소수점 n번째 자리까지 반올림해서 나타내는 방법

double pie = 3.14159265358979;
System.out.println(String.format("%.2f", pie)); //결과 : 3.14

String.format을 이용하고, %f에서 '.2'를 추가하면 소수점 2째자리까지 나타내준다.

출처 : https://coding-factory.tistory.com/250

1018번 (체스판 다시 칠하기) 문제

public static void find(int x, int y) {
		int end_x = x + 8;
		int end_y = y + 8;
		int count = 0;
 
		boolean TF = arr[x][y];
 
		for (int i = x; i < end_x; i++) {
			for (int j = y; j < end_y; j++) {
				if (arr[i][j] != TF) {	
					count++;
				}
				
				TF = (!TF);
			}
			
			TF = !TF;
		}
		
		count = Math.min(count, 64 - count);
		
		min = Math.min(min, count);
}
  • W인지 B인지를 boolean형으로 t or f로 2가지로 구분해서 편하게 나타낼 수 있다.
  • 올바른 색인지 아닌지를 판단하는 기준은, 한 칸 검사할 때마다 이 기준 변수(TF) 값도 t -> f / f -> t로 바꿔주면서 큰 메모리를 들이지 않고 진행할 수 있다.
  • W로 시작하는지 B로 시작하는지에 따라 달라지는 틀린 개수 구하기 : 8 8개에서 맨 처음 문자를 기준으로 틀린 개수를 구한 후, 이 문자와 반대되는 문자를 기준으로 했을 때를 구하려면, 전체 8 8 개에서 빼면 된다.
    (어려웠다...)

출처 : https://st-lab.tistory.com/101

각 자리 숫자 합 구하기

 while(num!=0){
            //num을 10으로 나눈 나머지를 sum에 더한다.
            sum += num%10;
            //num을 10으로 나눈 값을 다시 num에 저장한다.
            num /= 10;
}

출처: https://aristatait.tistory.com/54

8958번 (OX퀴즈) 문제

너무 어렵고 복잡하게 생각해서 시간초과가 뜨는데 좋은 해결책이 안 떠올라서 결국 다른 분의 풀이를 참고했다...
정말 간단하고 깔끔하게 해결해내셨다...
각 문자열에서 한 자리씩 보면서 O가 나왔다면 연속 횟수를 하나씩 늘리고,
X가 나왔다면 그 연속 횟수를 0으로 초기화시켜주면 된다!!!

출처 : https://st-lab.tistory.com/50

3. 느낀 점

요즘 머리가 잘 안 돌아가는 것 같다... 브론즈 문제도 조금 헤맸었다.. 해결 방법을 너무 복잡하게 떠올리고 구현하는 경향이 있었는데 다른 분들처럼 간단하게 직관적이게 풀고 싶다. 나도 빠르게 쉽게 잘 풀고 싶다!!

profile
기록하자

0개의 댓글

관련 채용 정보