램프

시간 제한1초메모리 제한256 MB

요약
두 이진 문자열 A와 B가 주어질 때, 구간을 0으로 만들기, 1로 만들기, 뒤집기 세 연산만으로 A를 B로 바꾸는 최소 연산 횟수를 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 그리디, 배열
정답자
아직 제출이 없습니다

문제

긴 복도에 NN개의 램프가 일렬로 나열되어 있다. 램프는 왼쪽부터 차례로 1번부터 NN번까지의 번호가 붙어있다. 각 램프는 off또는 on중 하나의 상태이다.

램프의 상태를 바꾸는 특별한 기작이 있어서, 한 번의 작업으로 다음 셋 중 한 가지 동작을 할 수 있다.

  • 1≤p≤q≤N1 \le p \le q \le N을 만족하는 정수 pp와 qq를 골라서 pp, p+1p+1, ⋯\cdots, qq를 off 상태로 만든다.
  • 1≤p≤q≤N1 \le p \le q \le N을 만족하는 정수 pp와 qq를 골라서 pp, p+1p+1, ⋯\cdots, qq를 on 상태로 만든다.
  • 1≤p≤q≤N1 \le p \le q \le N을 만족하는 정수 pp와 qq를 골라서 pp, p+1p+1, ⋯\cdots, qq의 상태를 바꾼다. (off를 on으로, on을 off로)

처음에 램프의 상태는 길이 NN의 문자열 AA로 표현된다. AA의 ii 번째 (1≤i≤N1 \le i \le N) 문자가 0이면 ii 번째 램프가 off 상태인 것이고, 1이면 on 상태인 것이다. 우리는 만들고 싶은 상태가 길이 NN의 문자열 BB로 표현 되어 있고, 작업의 수를 최소한으로 하여 만들고 싶다. BB의 ii 번째 (1≤i≤N1 \le i \le N) 문자가 0이면 ii 번째 램프가 off 상태인 것이고, 1이면 on 상태인 것이다.

램프의 수와, 현재 상태와 만들고 싶은 상태가 주어졌을 때, 만들고 싶은 상태로 바꾸는 데에 드는 연산의 수의 최솟값을 출력하여라.

입력

표준 입력에서 다음과 같은 형식으로 주어진다.

NN

AA

BB

출력

표준 출력으로 한 개의 줄을 출력하여라. 이는 원하는 상태를 만들기 위한 연산의 수의 최솟값이다.

제한

  • 1≤N≤1 000 0001 \le N \le 1\ 000\ 000.
  • AA와 BB는 길이 NN의 문자열이다.
  • AA와 BB를 이루는 문자들은 0 혹은 1이다.

예제3

  1. 예제 1

    입력
    8
    11011100
    01101001
    
    예상 출력
    4
    
  2. 예제 2

    입력
    13
    1010010010100
    0000111001011
    
    예상 출력
    3
    
  3. 예제 3

    입력
    18
    001100010010000110
    110110001000100101
    
    예상 출력
    5