[SWEA/구현] 1289: 원재의 메모리 복구하기 - 자바

2022. 8. 22. 02:43· Problem Solving/CT-Java
목차
  1. 문제
  2. 풀이

문제


문제링크

 

SW Expert Academy

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

swexpertacademy.com

 

풀이


일일히 한 원소씩 토글하여 풀었음

하지만 이렇게 풀면 배열의 길이가 길어질 수록 매우 비효율적인 풀이방법임.

 

위의 방법과 다르게 왼쪽부터 배열원소를 탐색하면서 처음에는 0을 탐색하고 0값과 다른값이 나오면 카운트를 증가하고 1을 다시 탐색하여 토글하는 방법으로 검사하는 것이 더 빠름.

 

비 효율적인 풀이 (하나씩 원소를 변경)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.stream.Stream;

public class SWEA_1289 {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int t = Integer.parseInt(br.readLine());
		
		for(int tc = 1; tc <=t; tc++) {
			String inputData = br.readLine();
			int[] nums = Stream.of(inputData.split("")).mapToInt(Integer::parseInt).toArray();
			
			int ans = 0;
			
			for (int i = 0; i < nums.length; i++) {
				
				int temp = nums[i];
				if(temp == 1) {
					nums[i] = 0;
					for(int j = i; j<nums.length; j++ ) {
						if(nums[j] == 1) nums[j] = 0;
						else nums[j] = 1;
					}
					ans += 1;
				}
			}
			System.out.printf("#%d %d\n", tc, ans);
		}

	}
}

 

효율적인 풀이 (토글방식)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.stream.Stream;

public class SWEA_1289 {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int t = Integer.parseInt(br.readLine());
		
		for(int tc = 1; tc <=t; tc++) {
			String inputData = br.readLine();
			int[] nums = Stream.of(inputData.split("")).mapToInt(Integer::parseInt).toArray();

			String[] inputStr = br.readLine().split("");
			int[] inputInt = new int[inputStr.lenght]
			for(int i = 0; i < inputStr.length; i++){
				inputInt[i] = Integer.parseInt(inputStr[i]);
			}
			
			int ans = 0;

				int temp = 0;
				for(int j = 0; j < nums.length; j++ ) {
					if(nums[j] != temp) {
						temp = nums[j];
						ans++;
					}
				}
			
			System.out.printf("#%d %d\n", tc, ans);
		}

	}
}

 

'Problem Solving > CT-Java' 카테고리의 다른 글

[백준/BFS] 2206: 벽 부수고 이동하기 - 자바  (0) 2022.08.27
[백준/BFS] 3055: 탈출 - 자바  (0) 2022.08.27
[백준/구현] 1244: 스위치 켜고 끄기  (0) 2022.08.22
[백준/BFS] 1697: 숨바꼭질 - 자바  (0) 2022.08.22
[백준/구현] 17135: 캐슬디펜스 - 자바  (0) 2022.08.22
  1. 문제
  2. 풀이
'Problem Solving/CT-Java' 카테고리의 다른 글
  • [백준/BFS] 2206: 벽 부수고 이동하기 - 자바
  • [백준/BFS] 3055: 탈출 - 자바
  • [백준/구현] 1244: 스위치 켜고 끄기
  • [백준/BFS] 1697: 숨바꼭질 - 자바
White Han
White Han
Software Developer
White Han
sudo apt-get happiness
White Han
전체
오늘
어제
  • 분류 전체보기 (195)
    • Language (47)
      • Java (17)
      • Java-Weekly-study (12)
      • Python (18)
    • BackEnd (11)
      • Server (2)
      • Spring (3)
      • Spring Security (0)
      • JDBC (1)
      • NodeJS (2)
      • LINUX (3)
    • DataBase (10)
      • MySQL (5)
      • MongoDB (4)
      • Oracle (1)
    • Infra (4)
      • Docker (4)
    • CS (38)
      • OS (38)
      • 아키텍쳐 (0)
    • Problem Solving (79)
      • Algorithm (8)
      • CT-Java (30)
      • CT-Python (41)
    • IDE (1)
      • eclipse (1)
      • vscode (0)
    • Etc. (3)
      • Git (1)
      • TDD, Refactor, CleanCode (1)
      • Conference (1)
    • 기록 (2)
      • 후기 (1)
      • 프로젝트 회고록 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

  • 방문해 주셔서 감사합니다.

인기 글

태그

  • Java super
  • 프로세스
  • Java Inheritance
  • 자바스크립트 개념
  • 사무용 모니터 추천
  • 자바 inheritance
  • 24인치 모니터 추천
  • 자바스크립트 식별자
  • javascript
  • javascript identifier
  • java
  • 싸피 후기
  • 알파스캔 AOC 24B1X
  • 운영체제 구조
  • 싸피 합격
  • Java this
  • 프로세서
  • OS
  • 사무용 모니터
  • 자바스크립스 식별자 종류
  • 알파스캔 모니터
  • 운영체제 역할
  • 운영체제
  • 자바스크립트
  • 싸피8기
  • AOC 24B1X
  • 싸피
  • SSAFY
  • 자바 super
  • 자바 this

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
White Han
[SWEA/구현] 1289: 원재의 메모리 복구하기 - 자바
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.