본문 바로가기
프로그래머스/C

[프로그래머스/C]프로그래머스 Level 1 : 바탕화면 정리 C언어

by starfish22 2023. 3. 13.
728x90

▶문제 : 코딩테스트 연습 - 바탕화면 정리 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

▶코드 작성

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int *solution(const char *wallpaper[], size_t wallpaper_len) {
    int *point = (int *)malloc(sizeof(int) * 4); //[lux, luy, rdx, rdy]
    point[0] = 50; //각 값들이 가질 수 있는 최대, 최솟값
    point[1] = 50;
    point[2] = 0;
    point[3] = 0;

    for (int i = 0; i < wallpaper_len; i++) {
        for (int j = 0; wallpaper[i][j] != '\0'; j++) { //wallpaper[i] 문자열 끝까지 반복
            if (wallpaper[i][j] == '#') { //'#' 찾기
                if (point[0] > i) point[0] = i; // lux
                if (point[1] > j) point[1] = j; // luy
                if (point[2] < i + 1) point[2] = i + 1; // rdx
                if (point[3] < j + 1) point[3] = j + 1; // rdy
            }
        }
    }

    return point;
}

 

▶해석

격자에 존재하는 파일(#) 중 왼쪽, 오른쪽, 위쪽, 아래쪽 각각 가장 끝에 있는 위치를 point 배열에 입력한다.

이때 오른쪽과 아래쪽은 파일까지 포함해야 되니 각각 위치+1 해준다.

728x90

댓글