백준 2447
혼자서는 못풀겠어서 검색해보고 아이디어 확인 후 직접 따져가면서 구현함
로직은 일찍이 완성했으나 2차원 배열 문제로 오랜시간 소모함
기존의 코드는 아래와 같음.
int N; cin << N; arr[N][N] = {'*',}; // 또는 만든 후 fill 함수로 채움
문제는 매개변수로 전달도 안되고, 도중에 char* pArr을 이용해서 컴파일 오류 없이 넘어갔는데 결과는 공백만 나옴.
오랜 삽질 끝의 아래의 코드로 이차원 배열 정의 부분을 바꿔주니 바로 해결됨.
cin >> N; char** arr = new char*[N]; for(int i=0; i<N; i++) { arr[i] = new char[N]; } fill(&arr[0][0], &arr[N-1][N], '*');
이유는 모르겠으나 이 부분에 대해 공부할 필요성을 느낌
전체 코드
#include <iostream>
using namespace std;
int N;
int star(char** arr, int n){
if(n==1)
return 0;
star(arr, n/3);
for(int i=0; i<N; i++) {
for(int j=0; j<N; j++) {
if( (i / (n / 3)) % 3 == 1 && (j / (n / 3)) % 3 ==1) {
arr[i][j] = ' ';
}
}
}
return 0;
}
int main(void){
cin >> N;
char** arr = new char*[N];
for(int i=0; i<N; i++) {
arr[i] = new char[N];
}
fill(&arr[0][0], &arr[N-1][N], '*');
star(arr, N);
for(int i=0; i<N; i++) {
for(int j=0; j<N; j++) {
cout << arr[i][j];
}
cout << '\n';
}
return 0;
}
Author And Source
이 문제에 관하여(백준 2447), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@csct3456/백준-2447
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#include <iostream>
using namespace std;
int N;
int star(char** arr, int n){
if(n==1)
return 0;
star(arr, n/3);
for(int i=0; i<N; i++) {
for(int j=0; j<N; j++) {
if( (i / (n / 3)) % 3 == 1 && (j / (n / 3)) % 3 ==1) {
arr[i][j] = ' ';
}
}
}
return 0;
}
int main(void){
cin >> N;
char** arr = new char*[N];
for(int i=0; i<N; i++) {
arr[i] = new char[N];
}
fill(&arr[0][0], &arr[N-1][N], '*');
star(arr, N);
for(int i=0; i<N; i++) {
for(int j=0; j<N; j++) {
cout << arr[i][j];
}
cout << '\n';
}
return 0;
}
Author And Source
이 문제에 관하여(백준 2447), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@csct3456/백준-2447저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)