코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍

코딩기록

1439번 : 뒤집기
알고리즘/백준

1439번 : 뒤집기

2022. 6. 26. 14:36

https://www.acmicpc.net/problem/1439

 

1439번: 뒤집기

다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모

www.acmicpc.net

 

 

문제

 

 

코드

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.nextLine();
		int n=0;
		
		for(int i=0;i<s.length()-1;i++) {
			if(s.charAt(i) != s.charAt(i+1))
				n++;
		}
		
		if(n%2==0) n/=2;
		else n=(n/2)+1;
		System.out.print(n);
	}
}

 

 

해결방법

메모장에 몇 가지 문자열을 만들어서 규칙을 생각해본다면 한 문자열에서 0=>1, 1=>0 으로 바뀐 개수가 짝수개인 경우 n/2, 바뀐 개수가 홀수개인 경우 (n/2)+1한 값이 행동의 최소 횟수가 된다.

 

1111 => n=0 => 최소 횟수= 0/2 = 0
10 => n=1 => 최소 횟수= (1/2)+1 = 1
1010 => n=3 => 최소 횟수= (3/2)+1 = 2
110011 => n=2 => 최소 횟수= 2/2 =1
10101010 => n=7 => 최소 횟수= (7/2)+1 = 4
101010101 => n=8 => 최소 횟수= 8/2 = 4

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

4796번 : 캠핑  (0) 2022.06.26
16953번 : A -> B  (0) 2022.06.26
10610번 : 30  (1) 2022.06.22
1789번 : 수들의 합  (0) 2022.06.22
10162번 : 전자레인지  (0) 2022.06.22
    '알고리즘/백준' 카테고리의 다른 글
    • 4796번 : 캠핑
    • 16953번 : A -> B
    • 10610번 : 30
    • 1789번 : 수들의 합
    코딍코딍
    코딍코딍
    ㅎ2

    티스토리툴바