본문 바로가기
알고리즘/SWEA

[SWEA / 원재의 메모리 복구하기 / JAVA]

by KDW999 2023. 5. 17.

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV19AcoKI9sCFAZN&categoryId=AV19AcoKI9sCFAZN&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=ALL&select-1=3&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

문제 접근

처음엔 charAt()으로 한 문자씩 잘라서 비교했는데 값이 달라서 나머지 문자들을 다 변경시켜줘야 할 때 나머지 문자들을 다 변경시켜주는 게 바로 안떠올라서 배열로 푸는 쪽으로 변경했다.

++ charAt()으로 그 인덱스에 있는 값을 변경시키려 했더니 좌측에는 변수만 올 수 있다는 에러가 뜨더라

 

목표 메모리와 초기화된 메모리의 인덱스를 하나씩 비교해가며 다를 경우 횟수 + 1 시키고 초기화 메모리 배열의 해당 인덱스부터 끝까지 다 값을 변경시켜준다.

 

import java.util.*;
import java.io.*;

public class Solution {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int T = Integer.parseInt(br.readLine()); // 테케
		
		for(int t=1; t<=T; t++) {
			String memory = br.readLine();
			String[] memoryArr = new String[memory.length()];
			String[] initMemoryArr = new String[memory.length()];
			int count = 0;
			
			for(int i=0; i<memoryArr.length; i++) {
				memoryArr[i] = String.valueOf(memory.charAt(i));
				initMemoryArr[i] = "0";
			}
			
			for(int i=0; i<memoryArr.length; i++) {
				if(!memoryArr[i].equals(initMemoryArr[i])) {
					count++;
					for(int j=i; j<initMemoryArr.length; j++) initMemoryArr[j] = memoryArr[i];
				}
			}
			System.out.println("#"+t+" "+ count);
		}
		
	}
}

 

다른 사람 풀이

초기값이 모두 0 고정이라 따로 초기화 배열을 만들지 않고 목표 메모리의 배열과 초기값 0을 쭉 비교해가면서 값이 다르면 값을 바꿔서 나머지도 쭉 비교해가는 방식

 

import java.util.Scanner;

class Solution{
	public static void main(String args[]) throws Exception{
		Scanner sc = new Scanner(System.in);
		int T;
		T=sc.nextInt();
		
		for(int test_case = 1; test_case <= T; test_case++){
			char[] c = sc.next().toCharArray();
            		char temp = '0';
            		int count = 0;
            		for(int i = 0 ; i < c.length ; i++){
                		if(c[i] != temp){
	                   	 temp =c[i];
    	                  	 count ++;
                		}
			}
             System.out.println("#"+test_case  + " " + count);
		}
	}
}

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA / Sum / JAVA]  (0) 2023.05.19
[SWEA / 회문1 / JAVA]  (0) 2023.05.18
[SWEA / 농작물 수확하기 / JAVA]  (0) 2023.05.17
[SWEA / N-Queen / JAVA]  (0) 2023.05.16
[SWEA / 파리 퇴치 / JAVA]  (0) 2023.05.15

댓글