Notice
Recent Posts
Recent Comments
Link
뭐라도 배우면 기록하자
[알고리즘 문제풀이] View 본문
문제 출처: https://swexpertacademy.com 의 1206번 문제
삼성 측에서 "※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다." 라고 하여 제 코드와 간단한 코드 설명만 업로드하겠습니다. (C만 써보고 C++을 써본 적이 없으나, 해당 문제에서 C로 문제 제출을 지원하지 않아서 C로 그냥 짜고 C++로 제출했는데 문제없었습니다.)
내가 작성한 코드
#include <stdio.h>
int
main(
void
){
for
(
int
p = 1; p < 11; p++){
int
column, row, count = 0;
//column = input값에서 제공되는 가로값, row = 문제에서 255로 제한, count = 조망권 확보된 세대의 수
scanf
(
"%d"
, &column);
int
array[column][255]; //빌딩이 지어질 수 있는 공간을 매트릭스로 구현
for
(
int
i = 0; i < column; i++){
for
(
int
j = 0; j < 255; j++){
array[i][j] = 0;
//모든 칸 0(빌딩X)으로 초기화
}
}
for
(
int
i = 0; i < column; i++){
scanf
(
"%d"
, &row);
for
(
int
j = 1; j < row+1; j++){
array[i][j-1] = 1;
//input에 따라 input의 row(세로)값까지 1(빌딩O)으로 초기화
}
}
for
(
int
i = 2; i < column-2; i++){
for
(
int
j = 0; j < 255; j++){
if
(array[i][j] == 1){
//조망권 확보된 세대의 조건(아래 줄까지)
if
((array[i-1][j] == 0) && (array[i-2][j] == 0) && (array[i+1][j] == 0) && (array[i+2][j] == 0)){
count++;
}
}
}
}
printf
(
"#%d %d\n"
, p, count);
}
return
0;
}
저는 해당 문제를 행렬로 접근해서 문제를 풀었고 위의 로직은 금방 떠올랐지만 개인적으로 굉장히 원시적인 코드가 아닌가 생각이 듭니다;; 더 좋은 알고리즘이 있다면 공유 부탁드려요. (SWexpert Academy에는 출력값만 printf 해도 정답처리가 되다보니, 다른 분들 코드 보기가 꺼려지더라구요.. 내 포인트 ㅜㅜ)
'프로그래밍언어공부 > C' 카테고리의 다른 글
[알고리즘 문제풀이] 조교의 성적 매기기 (0) | 2019.01.06 |
---|---|
[알고리즘 문제풀이] 최빈수 구하기 (0) | 2019.01.01 |
[알고리즘 문제풀이] 분수찾기 (0) | 2018.12.25 |
[알고리즘 문제풀이] 벌집 (0) | 2018.12.24 |
[C언어] chap28 도전 프로그래밍 4-5 (0) | 2018.04.25 |
Comments