https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV19AcoKI9sCFAZN
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
- 알고리즘[접근방법]
처음에 문제 내용이 잘 이해가 안되어서 반복해서 읽어따.. 문제의 핵심은 선택한 위치부터 그 뒤로 다 같은 값을 넣는다는 것이다. 문제에 나와있는 예시처럼 0100의 경우 3번째 bit를 골라 1로 설정하게 되면 0111이 된다. 모든 bit이 0으로 초기화 된 상태에서 원래 상태로 되돌리면 된다!
처음엔 Int로 값을 받았는데, 그렇게 하니 0110같은 경우를 110으로 처리해버려서 char로 배열을 설정해주었다. 앞에서 부터 값을 비교해가면서 원래 값과 다를 경우 리스트를 계속 갱신해 가는 식으로 문제를 풀었다.
import java.util.Arrays;
import java.util.Scanner;
public class P001_SWEA1289_원재의메모리복구하기 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for (int i = 0; i < num; i++) {
String memory = sc.next();
int answer = 0;
char[] tmp = new char[memory.length()];
Arrays.fill(tmp, '0');
for (int j = 0; j < memory.length(); j++) {
if (memory.charAt(j) == '1' && tmp[j] == '0') {
answer += 1;
Arrays.fill(tmp, j, tmp.length, '1');
} else if (memory.charAt(j) == '0' && tmp[j] == '1') {
answer += 1;
Arrays.fill(tmp, j, tmp.length, '0');
}
}
System.out.println("#num" + (i + 1) + " " + answer);
}
}
}
'알고리즘 문제 > JAVA' 카테고리의 다른 글
[백준]7576번:토마토(JAVA) (0) | 2022.10.08 |
---|---|
[백준]17478번:재귀함수가 뭔가요(JAVA) (0) | 2022.10.07 |
[SWEA]1952번:수영장(JAVA) (2) | 2022.10.05 |
[백준] 10171번: 고양이(JAVA) (0) | 2022.10.04 |
[백준] 1244번:스위치켜고끄기(JAVA) (0) | 2022.10.04 |