Junior-Developer
Home
  • Category (316)
    • 문제풀이 (270)
      • 백준oj (201)
      • 프로그래머스 (53)
      • 명품 자바 프로그래밍(개정4판) (11)
      • 구름 (5)
    • 알고리즘 (6)
    • Node.js (2)
    • 체크리스트 (37)
블로그 내 검색
Home

Junior-Developer

1일 1커밋! 1일 1 백준!

  • 문제풀이/백준oj

    [백준OJ] 1034번 램프

    2021. 8. 28.

    by. Hyeon-Uk

    반응형

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

     

    1034번: 램프

    첫째 줄에 N과 M이 주어진다. N은 행의 개수이고, M은 열의 개수이다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 램프의 상태가 주어진다. 1이 켜져있는 상태이고, 0이 꺼져

    www.acmicpc.net


     

    풀이

    먼저, 우리가 바꿀 수 있는것은 열이다. 열을 k번 바꾼뒤 각 행들을 모두 검사해서 켜진 행들의 최댓값을 찾아야 한다.

     

    행을 하나하나 차례대로 검사를 하며, k번을 스위치를 누름으로 해당행이 켜진다면, 해당 행과 같은 모양의 행은 모두 켜진다. 

    예를들어

    101

    010

    101

    이 있고, k=1 이라고 해보자.

     

    그럼 1번째 행을 보면 2번째 열의 스위치를 누르면 111로 모두 켜진다. k번 눌렀을때 행이 모두 켜지므로, 1번째 행과 같은 3번째 행도 모두 켜진다고 볼 수 있다. 따라서 2번째 열의 스위치를 1번 누르면, 2개의 행이 켜진다고 볼 수 있다.

     

    2번째 행을 보면, 누를 수 있는 횟수는 1번인데, 켜야하는 열이 2개이다. 따라서 해당 행은 뭘 해도 안켜지는 행이므로 넘어간다.

     

    3번째 행도 1번째 행과 마찬가지이다.

     

    이때, k가 홀수개라면, 꺼져있는 전구의 개수또한 홀수개여야 한다.

     

    위의 예시에서 만약 k가 2라고 한다면, 1번째 행에서 2번째 행의 스위치를 한번 누르면 다 켜지는데, 남은 한번을 사용한다면 그 열의 스위치는 다시 꺼지기 때문에, 남아있는 전구의 홀짝과 k의 홀짝이 같아야한다!

     

     

    시간복잡도

    O(NM)

     

    반응형

     

    코드

    #include <iostream>
    #include<string>
    using namespace std;
    
    string arr[51];
    int ret=0;
    int n,m,k;
    
    int main() {
    	cin>>n>>m;
        for(int i=0;i<n;i++){
            cin>>arr[i];
        }
        cin>>k;
        for(int i=0;i<n;i++){
            int z=0;
            for(int j=0;j<m;j++){
                if(arr[i][j]=='0') z++;
            }
            
            if(z<=k&&k%2==z%2){
                int cnt=0;
                for(int j=0;j<n;j++){
                    if(arr[i]==arr[j]) cnt++;
                }
                ret=max(ret,cnt);
            }
        }
        cout<<ret<<"\n";
    	return 0;
    }
    반응형
    저작자표시 (새창열림)

    '문제풀이 > 백준oj' 카테고리의 다른 글

    [백준OJ] 14620번 꽃길  (0) 2021.08.30
    [백준OJ] 4195번 친구 네트워크  (0) 2021.08.29
    [백준OJ] 20154번 이 구역의 승자는 누구야?!  (0) 2021.08.27
    [백준OJ] 15684번 사다리 조작  (0) 2021.08.26
    [백준OJ] 6137번 문자열 생성  (0) 2021.08.25

    댓글

    관련글

    • [백준OJ] 14620번 꽃길 2021.08.30
    • [백준OJ] 4195번 친구 네트워크 2021.08.29
    • [백준OJ] 20154번 이 구역의 승자는 누구야?! 2021.08.27
    • [백준OJ] 15684번 사다리 조작 2021.08.26
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
Hyeon-Uk

티스토리툴바