[프로그래머스, Java] 바탕화면 정리

2025. 7. 29. 19:24·CodingTest/Programmers

사진을 클릭하면 해당 문제로 이동

💡풀이 아이디어

".........."
".....#...."
"......##.."
"...##....."
"....#....."

위에서 부터 #이 있으면 멈추기 : up = y축 1번
밑에서 부터 #이 있으면 멈추고 1 더하기 : down = y축 4+1 번

전체분기하여 가장 왼쪽과 오른쪽에 나타나는 # 위치 찾기 :  left = x축 3번 / right = x축 7+1번

    각각을 조합하면 -> (up,left,down,right) = (1,3,5,8)

💡풀이 1

class Solution {
    public int[] solution(String[] wallpaper) {
        int up = 0, down = 0;

        // 위에서 부터 #이 있으면 멈추기
        for(int i = 0; i < wallpaper.length; i++) {
            if(wallpaper[i].contains("#")) {
                up = i;
                break;
            }
        }

        // 밑에서 부터 #이 있으면 멈추고 1 더하기
        for(int i = wallpaper.length - 1; i >= 0; i--) {
            if(wallpaper[i].contains("#")) {
                down = i + 1; // 좌표를 맞추기 위해 +1
                break;
            }
        }

        // 전체분기하여 가장 왼쪽과 오른쪽에 나타나는 # 위치 찾기
        int left = Integer.MAX_VALUE;
        int right = Integer.MIN_VALUE;

        for(int i = 0; i < wallpaper.length; i++) {
            int p1 = wallpaper[i].indexOf("#");
            int p2 = wallpaper[i].lastIndexOf("#");

            left = (p1 == -1) ? left : Math.min(left, p1);
            right = (p2 == -1) ? right : Math.max(right, ++p2); // p2는 좌표를 맞추기 위해 +1
        }

        return new int[]{up, left, down, right};
    }
}

 

💡풀이 2

- 반복문으로 한번에 처리

class Solution {
    public int[] solution(String[] wallpaper) {
        int up = Integer.MAX_VALUE,
        	down = Integer.MIN_VALUE,
        	left = Integer.MAX_VALUE,
        	right = Integer.MIN_VALUE;

        for(int y = 0; y < wallpaper.length; y++) {
            for(int x = 0; x < wallpaper[0].length(); x++) {
                if(wallpaper[y].charAt(x) == '#') {
                    up = Math.min(up, y);
                    down = Math.max(down, y + 1);
                    left = Math.min(left, x);
                    right = Math.max(right, x + 1);
                }
            }
        }

        return new int[]{up, left, down, right};
    }
}

 


 

GitHub - okjunghyeon/Programmers_CodingTest: 프로그래머스 관련 코딩테스트 문제를 풀이한 저장소입니다.

프로그래머스 관련 코딩테스트 문제를 풀이한 저장소입니다. Contribute to okjunghyeon/Programmers_CodingTest development by creating an account on GitHub.

github.com

 

'CodingTest > Programmers' 카테고리의 다른 글

[프로그래머스, Java] 유연근무제  (0) 2025.07.29
[프로그래머스, Java] 개인정보 수집 유효기간  (0) 2025.07.29
[프로그래머스, Java] 신규 아이디 추천  (0) 2025.07.29
[프로그래머스, Java] 성격 유형 검사하기  (0) 2025.07.21
[프로그래머스, Java][카카오 인턴] 키패드 누르기  (0) 2025.07.21
'CodingTest/Programmers' 카테고리의 다른 글
  • [프로그래머스, Java] 유연근무제
  • [프로그래머스, Java] 개인정보 수집 유효기간
  • [프로그래머스, Java] 신규 아이디 추천
  • [프로그래머스, Java] 성격 유형 검사하기
devoks
devoks
꾸준히 작성해보자!
  • devoks
    ok's 개발 블로그
    devoks
  • 전체
    오늘
    어제
    • 분류 전체보기 (112) N
      • Backend (15)
        • SpringBoot (0)
        • Java (15)
      • Cs (18) N
      • Infra (0)
        • AWS (0)
        • Docker (0)
      • CodingTest (79)
        • Programmers (79)
  • 링크

    • My GitHub
  • 인기 글

  • 태그

    codingtest
    CS
    programmers
    effectivejava
    java
    BufferedReader
    BufferedWriter
    StringTokenizer
    switch
    json
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
devoks
[프로그래머스, Java] 바탕화면 정리
상단으로

티스토리툴바