Write a program that lets the user enter in an odd positive integer (you may assume the input is always valid), and prints out an ASCII art letter N made using the character N.
If the input is 1, the output is:
N
If the input is 3, the output is:
N N
NNN
N N
If the input is 5, the output is:
N N
NN N
N N N
N NN
N N
If the input is 7, the output is:
N N
NN N
N N N
N N N
N N N
N NN
N N
The pattern continues on like this. The output may contain trailing spaces.
86개의 풀이가 있습니다.
Java
public static void main(String[] args)
{
int num = Integer.parseInt(args[0]);
for (int i=0; i<num; i++)
{
System.out.print("N");
for (int j=1; j<num-1; j++)
{
if ( j == i && (i != 0 || i != (num-1)) )
System.out.print("N");
else
System.out.print(" ");
}
if (num > 1)
System.out.println("N");
}
}
Python 3
def AAN(a):
b = 0
while b < a:
b += 1
if b == 1 or b == a:
if a == 1:
print('N')
else:
print('N' + ' ' * (a - 2) + 'N')
else:
print('N' + ' ' * (b - 2) + 'N' + ' ' * (a - b - 1) +'N')
Common Lisp 공부 중인데 어렵네요. 재귀를 사용해서 구현해야할 것 같은 압박이 드네요.
(defconstant N #\N "character 'N'")
(defconstant SPACE #\ "character ' '")
;; 라인을 표현하는 문자 리스트 생성
(defun build-row (row size)
(let ((list nil))
(loop for x from 0 to (1- size) do
(if (or
(eql row x)
(eql x 0)
(eql x (1- size))
)
(push N list)
(push SPACE list)
)
)
list
)
)
;; 각 라인별 데이터를 리스트로 만듬
(defun build-letter-n (size)
(let ((list))
(dotimes (row size)
(push (build-row row size) list)
)
list
)
)
;; 라인별, 문자 항목을 화면에 표시
(defun print-letter-n (size)
(mapcar
(lambda (row-list)
(dolist (value row-list)
(princ value)
)
(fresh-line)
)
(build-letter-n size)
)
)
PHP
const FIRST = 1;
const N = "N";
const SPACE = " ";
function print_line($current, $finish) {
for($i = FIRST; $i <= $finish; $i++)
{
if($i <> $current && !($i == FIRST || $i == $finish)) echo " ";
else echo "N";
}
echo "\n";
}
function main($agrv)
{
for($i = FIRST; $i <= $agrv; $i++)
{
print_line($i, $agrv);
}
}
VB.NET
Sub Main()
Dim size As Integer = CInt(Val(Console.ReadLine))
For y As Integer = 1 To size
For x As Integer = 1 To size
Console.Write({"N", " "}(CInt((x = 1 Or x = size) Or x = y) + 1))
Next
Console.WriteLine()
Next
Console.ReadLine()
End Sub
x축 처음과 끝, x 와 y가 같을경우 N을 출력했습니다.
void exce86()
{
int n;
scanf_s("%d", &n);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (j == 0 || j == (n - 1) || j == i)
printf("N");
else
printf(" ");
}
printf("\n");
}
}
C입니다.
def sevendrawer(a):
a = int(a)
if (a % 2) == 0:
print("Odd number is not acceptable!")
exit()
else:
palette = []
for iii in range(0, a):
palette.append('x')
for i in range(0, a):
palette[0] = ('N')
for ii in range(1, a-1):
palette[ii] = (' ')
palette[i] = ('N')
palette[a-1] = ('N')
print("".join(palette))
a = input()
sevendrawer(a)
join 함수로 리스트를 문자열로 변환할 수 있어서 일이 편해졌습니다.
(defn ancii-art-n [n]
(let [max-idx (dec n)
r (range n)
l-idxs (map vector r (repeat 0))
m-idxs (map vector r r)
r-idxs (map vector r (repeat max-idx))
idxs (set (concat l-idxs m-idxs r-idxs))]
(doseq [i r
j r]
(if (contains? idxs [i j])
(print "N")
(print " "))
(when (= j max-idx)
(println)))))
(ancii-art-n 1)
;>> N
;=> nil
(ancii-art-n 3)
;>> N N
;>> NNN
;>> N N
;=> nil
(ancii-art-n 5)
;>> N N
;>> NN N
;>> N N N
;>> N NN
;>> N N
;=> nil
(ancii-art-n 7)
;>> N N
;>> NN N
;>> N N N
;>> N N N
;>> N N N
;>> N NN
;>> N N
;=> nil
printN(5);
echo "<br>";
printN(7);
function printN($max) {
for($i=0; $i<$max; $i++){
for($j=0; $j<$max; $j++){
if ($j == 0 || $j == ($max -1) || $j == $i) {
echo "N";
} else {
echo " ";
}
}
echo "<br>";
}
}
n = input("input an odd number:")
map = []
for i in range(n):
map.append([])
for i in range(n):
for k in range(n):
map[i].append(" ")
def print_map():
for i in range(n):
print "".join(map[i])
for i in range(n):
map[i][0] = "N"
for i in range(n):
map[i][n-1] = "N"
for i in range(n):
map[i][i] = "N"
print_map()
c언어 입니다~!
#include <stdio.h>
int main()
{
int N = 7;
int i, j;
for(i=0; i<N; i++){
for(j=0; j<N; j++){
if(j == 0 || j == i || j == N-1) printf("N");
else printf(" ");
}
printf("\n");
}
return 0;
}
//가로 줄(j)을 기준으로,
//처음, 맨 마지막, 세로 i와 인덱스가 같을 경우 'N'을 출력하였습니다~
대각선 부분을 만들고, 첫줄과 마지막줄에서는 대각선부분이 없어야 하므로, 좌우 1글자씩 잘라냈습니다.
dd=input()
def printN(odd):
N='N'
S=' '
for i in range(odd):
ladder = S*i+N+S*(odd-i-1)
print (N+ladder[1:-1]+N)[:odd]
printN(odd)
파이썬3.4입니다
def fnc(n):
for i in range(n):
for j in range(n):
if j == 0 or j == i or j == n - 1:
#행과 열이 처음이거나, 같거나, 마지막일때
print('N', end = '')
else:
#나머지는 공백으로 채운다
print(' ', end = '')
print() #하나의 행이 끝나면 줄바꿈한다
fnc(1)
fnc(3)
fnc(5)
fnc(7)
JAVA 입니다.
public void drawAsciiN(int num){
int matrix[][];
if(num == 1 )
System.out.println("N");
else{
matrix = new int[num][num];
for(int i = 0 ; i < num ;i++){
for(int j = 0 ; j < num ;j++){
if(i == j || (j == 0 || j==num-1))
System.out.print("N");
else
System.out.print(" ");
}
System.out.println();
}
}
System.out.println("");
}
Ruby
n.times {|i| a="N".rjust(i+1).ljust(n); a[0]=a[-1]="N"; puts a }
or
art = ->n=gets.to_i { (1..n).map {|i| a="N".rjust(i).ljust(n); a[0]=a[-1]="N"; a} }
Test
expect(art[1]).to eq ["N"]
expect(art[3]).to eq ["N N", "NNN", "N N"]
expect(art[5]).to eq ["N N", "NN N", "N N N", "N NN", "N N"]
N = 'N'; S= ' '
while __name__ == '__main__':
l = int(input('>>>'))
print('\n'.join(''.join(N if (y == x or y == 0 or y == l-1) else S for y in range(l)) for x in range(l)))
파이썬 3.5.1
import java.util.Scanner;
public class MyClass {
public static void main(String []args){
char S = ' ';
char N = 'N';
Scanner scan = new Scanner(System.in);
int len = scan.nextInt();
for(int i = 0; i<len; i++){
for(int j = 0; j<len; j++){
if ((i == j)||(j == 0)||(j == len-1)){
System.out.print(N);
} else {
System.out.print(S);
}
}
System.out.println();
}
}
}
자바
#include <iostream>
using namespace std;
int main(){
char S = ' ';
char N = 'N';
int num;
cin >> num;
for(int i = 0; i<num; i++){
for(int j = 0; j<num; j++){
if ((j == i) || (j == 0) || (j == num-1)){
cout << N;
} else {
cout << S;
}
}
cout << endl;
}
}
C++
n*n 크기의 버퍼를 만들고 여기에 필요한 만큼의 문자 N을 넣는 식으로 처리해봤습니다. 이쪽이 더 맘에 드네요.
def do(n):
buffer = [' '] * (n*n)
buffer[0::n] = ['N'] * n ## 왼쪽 세로선
buffer[n-1::n] = ['N'] * n ## 오른쪽 세로선
buffer[n+1::n+1] = ['N'] * (n-1) ## 대각선
return '\n'.join(''.join(buffer[i*n:i*n+n]) for i in range(n))
def main():
n = int(input()) // 2 * 2 + 1
print(do(n))
대각선위치만 덧쓰는 방식입니다.
def do(n):
if n == 1:
return 'N'
result = []
for i in range(n):
line = list('N' + ' ' * (n - 2) + 'N')
line[i] ='N'
result.append(''.join(line))
return '\n'.join(result)
for i in range(4):
print(2*i+1)
print(do(2 * i + 1))
print('')
Python 3.4.4
def ascii_art_n(number):
for i in range(number):
output = [ ' ' for _ in range(number) ]
output[0] = 'N'
output[-1] = 'N'
output[i] = 'N'
print(''.join(output))
ascii_art_n(1)
ascii_art_n(3)
ascii_art_n(5)
def do(x):
print('\n'.join(
[('{0}' + ('{1:<' + str(x - 2) + '}{2}' if x > 2 else ''))
.format('N'
, ((' ' * (y - 1)) + 'N') if y > 0 and y < x - 1 else ''
, 'N' if x > 1 else '') \
for y in range(x)]))
do(1)
do(3)
do(5)
do(7)
do(9)
do(11)
Python 3.5.2에서 작성하였습니다.
$input = 7;
for($i=1;$i<=$input;$i++){
for($j=1;$j<=$input;$j++){
echo ($j == $i) || ($j == 1) || ($j == $input) ? "N" : " ";
}
echo "\n";
}
n = int(input())
arr = [[' ' for a in range(n)] for x in range(n)]
for x in range(n):
arr[x][0] = 'N'
arr[x][x] = 'N'
arr[x][n-1] = 'N'
print(''.join(arr[x]))
#### 2017.01.18 D-400 ####
import java.util.Scanner;
import static java.lang.System.in;
public class ASCIIArtN {
public static void main(String[] args) {
int n = new Scanner(in).nextInt();
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (j == 0 || j == n - 1 || j == i) {
System.out.print("N");
} else {
System.out.print(" ");
}
}
System.out.println("");
}
}
}
#include <iostream>
using namespace std;
int main()
{
int oddnum, tonum, i = 0;
cout << "enter the odd positive integer.\n";
cin >> oddnum;
char *Narr;
Narr = (char*)malloc(oddnum);
for(tonum = 1;tonum<=oddnum;tonum++)
{
for(i = 1;i<=oddnum;i++)
{
Narr[i] = 32;
}
Narr[1] = 78;
Narr[oddnum] = 78;
Narr[tonum] = 78;
for(i = 1;i<=oddnum;i++)
{
cout << Narr[i];
if(i==oddnum)
{
cout << "\n";
}
}
}
}
맥주 한캔 먹고 작성한거라 좀 엉망이네요;
python 3.4 (1) 양끝에 N + 각 줄에 절반+1 까지만 차례로 N 을 채우고 그 줄을 처음에, 끝에는 reversed로 채운후 안쪽으로 해나가면 됩니다.
def draw_N(n):
ceil_half = int(n/2)+1
pattern = [""]*n
for i in range(ceil_half):
temp = [' ']*n
temp[0],temp[-1],temp[i] = 'N'*3
pattern[i], pattern[-i-1] = temp, list(reversed(temp))
for x in pattern:
print("".join(x))
(2) 1부터 len(temp)-1까지 돌리기
def draw_N(n):
temp = [' ']*n
temp[0], temp[-1] = 'N'*2
print(''.join(temp))
for i in range(1, len(temp)-1):
pattern = temp[:]
pattern[i] = 'N'
print(''.join(pattern))
print(''.join(temp))
var asciiartn = function(n) {
console.log(Array.from(Array(n), (_, r) => Array.from(Array(n), (_, c) => (c === r || c === 0 || c === n - 1) ? "N" : " ").join("")).join("\n"));
};
asciiartn(1);
asciiartn(3);
asciiartn(5);
asciiartn(7);
// N - C
#include <stdio.h>
int main(void)
{
int n, i, j;
printf("what size do you want? : ");
do
{
scanf("%d", &n);
} while (n % 2 == 0);
for (i = 0; i < n; i++)
{
printf("N");
for (j = 1; j < n - 1; j++)
if (j == i)
printf("N");
else
printf(" ");
if (n != 1)
printf("N");
printf("\n");
}
}
C# 2차원 배열 사용
using System;
class Program
{
static void Main(string[] args)
{
int N = 0;
try
{
Console.Write("N = ");
string s = Console.ReadLine();
N = int.Parse(s); // 여기서 int N 하면 try{} 밖에서 못 씀
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
char[,] arr = new char[N, N]; // Rectangular array. [][]는 가변길이배열
Array.Clear(arr, 0, arr.Length); // 배열초기화(배열명, 시작idx, 길이)
for (int i = 0; i < N; i++)
{
arr[i, 0] = arr[i, N - 1] = arr[i,i] = 'N';
}
for (int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
{
Console.Write(arr[i,j]);
}
Console.WriteLine();
}
}
}
Python
N = int(input('N = '))
for i in range(0, N):
print('N' +
' ' * (i-1) +
('N' if 0 < i and i < N-1 else '') +
' ' * (N-2-i) +
'N');
Python 3으로 풀었습니다.
def print_art_n(n):
basic = ''.join(['N' if _ == 0 or _ == n-1 else ' ' for _ in range(n)])
for i in range(n):
print(basic[:i] + 'N' + basic[i+1:])
public class Calculate {
public static void main(String[] args) {
int num = 11;
for(int i=0 ; i<num ; i++){
for(int j=0 ; j<num ; j++){
if(j==0 || j==num-1 || i==j) System.out.print("N");
else System.out.print(" ");
}
System.out.println();
}
}
}
# python 3.6
n = int(input())
string = [["N" if x == 0 or x == (
n - 1) else " " for x in range(n)] for y in range(n)]
for i in range(n):
string[i][i] = "N"
string = "\n".join(["".join(lst) for lst in string])
print(string)
public class Example86 {
public static void main(String[] args) {
Example86 ex = new Example86();
ex.outputPrint(7);
}
private void outputPrint(int n) {
for (int i = 0; i < n; i++) {
System.out.print("N");
for (int j = 1; j < n - 1; j++) {
if (i == j) {
System.out.print("N");
} else {
System.out.print(" ");
}
}
System.out.print("N");
System.out.println();
}
}
}
java로 짜 봤습니다.
import java.util.Scanner;
public class ASCIIArtN {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("N의 갯수를 입력하세요.?");
int a;
a = sc.nextInt();
for (int i = 1; i <= a; i++)
{
for (int j = 1; j <= a; j++)
{
if (i == j || j == 1 || j == a)
System.out.print("N");
else
System.out.print(" ");
}
System.out.println();
}
}
}
import numpy as np
while True:
n=int(input())
if n%2: break
step=np.eye(n)
for i in range(n):
step[i][0]=step[i][-1]=1
step=list(map(list, step))
for i in range(n):
step[i]=''.join(list(map(str,(map(int, step[i]))))).replace('1','N').replace('0',' ')
step='\n'.join(step)
print(step)
파이썬 3.6
def asciiArtN(n):
if n == 1:
print('N')
if n % 2 == 1:
for i in range(n):
if i == 0 or i == n-1:
print("N"+' '*(n-2)+"N")
else:
print("N"+' '*(i-1)+"N"+' '*((n-1)-(i+1))+"N")
if __name__ == "__main__":
n = int(input("양의 정수 중 홀수를 입력하세요: "))
asciiArtN(n)
양의 정수 홀수를 입력하세요: 3
N N
NNN
N N
양의 정수 홀수를 입력하세요: 9
N N
NN N
N N N
N N N
N N N
N N N
N N N
N NN
N N
def art(n):
if n%2!=1:
print('not valid')
if n==1:print('N')
else:
print('N'+' '*(n-2)+'N')
for i in range(0,n-2):
print('N'+' '*i+'N'+' '*((n-3)-i)+'N')
print('N'+' '*(n-2)+'N')
# 파이썬
def art_n(i):
print("N" + " "*(i-2) + "N")
for m in range(1, i-1):
print("N" + " "*(m-1) + "N" + " "*(i-2-m) + "N")
print("N" + " "*(i-2) + "N")
art_n(3)
art_n(5)
art_n(7)
art_n(9)
art_n(11)
def artn(n):
if n != 1:
print("N"+" "*(n-2)+"N")
for i in range(n-2):
print("N"+" "*i+"N"+" "*(n-3-i)+"N")
print("N"+" "*(n-2)+"N")
else:
print("N")
artn(int(input()))
N=int(input("홀수인 양의 정수를 입력하세요:"))
if N==1:
print("N")
exit()
array=[[0]*N for k in range(N)]
for k in range(1,N-1):
array[k][k]="N"
for g in range(N):
array[g][0]="N"
for b in range(N):
array[b][N-1]="N"
for a in range(N):
ans=''
for character in array[a]:
if character==0:
ans+=' '
continue
ans+=str(character)
print(ans)
def nart(n):
if n == 1:
return 'N'
else:
result = ['N' + ' '*(n - 2) + 'N']
for i in range(1, n - 1):
result.append(result[0][:i] + 'N' + result[0][i + 1:])
result.append(result[0])
final = ''
for a in result:
final = final + a + '\n'
return final
Python 3
n = int(input("number: "))
for i in range(n):
arr = [' '] * n
arr[0], arr[n-1], arr[i] = 'N','N','N'
print("".join(arr))
파이썬으로 작성했습니다.
n=int(input(''))
for p in range(n):
for q in range(n):
if q==0 or q==n-1: print('N',end='')
elif p>0 and p<n-1:
if p==q: print('N',end='')
else: print(' ',end='')
else: print(' ',end='')
print('')
def ascii():
num = int(input("insert the odd integer : "))
while num % 2 == 0 :
num = int(input("insert the odd integer again : "))
res = ["N"+" " * (num-2) +"N"]
for i in range(num -2):
res.append(" ")
res.append("N"+" " * (num-2) +"N")
for i in range(1,num-1):
res[i] = "N" + " " * (i-1) + "N" + " " * (num-2-i) + "N"
return "\n".join(res)
print(ascii())
user_input = int(input())
# 맨위와 아래를 제외하고 N이 순차적으로 2개씩
height = user_input
gangyuk = height - 2
#first
print("N",'N',sep = ' ' * gangyuk)
# middle
idx = 1
while True:
word = "N{}N".format(' ' *gangyuk)
lst = list(word) # N, , ,N
del lst[idx]
lst.insert(idx,'N')
print(''.join(lst))
idx += 1
if idx == len(word) -1 :
break
#final
print("N",'N',sep = ' ' * gangyuk)
ublic class test{
public static void main(String[] args) {
int num = 11;
for(int i=0 ; i<num ; i++){
for(int j=0 ; j<num ; j++){
if(j==0 || j==num-1 || i==j) System.out.print("N");
else System.out.print(" ");
}
System.out.println();
}
}
}
while 1:
n = int(input('N: '))
if n<0 or not n%2: print('홀수가 아닙니다. 다시 입력해 주세요.')
else: break
art = ['N'*n for i in range(n)]
for i in range(n):
art[i] = ''.join(['N' if j == 0 or j == i or j == n-1 else ' ' for j in range(n)])
for i in range(n):
print(art[i])
파이썬!
n = 7
for m in range(n):
print('N' + ' '*(m-1)+ 'N' + ' '*(n-m-2) + 'N') if not (m == 0 or m == n-1) else print('N' + ' '*(n-2) + 'N')
a = [' ']*int(input('입력'))
a[0] ='N'
a[-1] ='N'
print(''.join(a))
for i in range(1,len(a)):
b=a[:]
b[i] ='N'
print(''.join(b))
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
if(0 == j || n - 1 == j || i == j)
{
cout << 'N';
}
else
{
cout << ' ';
}
}
cout << endl;
}
}
import java.util.Scanner;
public class KimSanghyeop {
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
System.out.print("라인 수를 입력하세요 : ");
int num = sc.nextInt();
for(int y1=0;y1<num;y1++)
{
for(int x1=0; x1<num;x1++)
{
if(x1==0 || x1==num-1 || x1==y1)
{
System.out.print("N");
}
else
{
System.out.print(" ");
}
}
System.out.println("");
}
}
}
조금 다른 N으로 풀었습니다.
def N(n):
if n == 1:
print('N')
else:
for x in range(n):
print('N'+' '*x + 'N'+' '*(n-x-1) + 'N')
n = int(input())
def art_N(n):
for i in range(n):
for j in range(n):
if i == j:
print('N', end='')
elif j == 0 or j == n-1:
print('N', end='')
else:
print(' ', end='')
print()
return
art_N(n)
오늘도 파이썬 코드 많이 배워갑니다 :)
input_number = int(input())
for i in range(input_number):
for j in range(input_number):
if (j == 0) or (j == input_number-1):
print("N", end='')
elif (j > 0) and (j < input_number-1):
if i == j:
print("N", end='')
else:
print(" ", end='')
print()
namespace codingdojang__
{
class Program
{
static void Main(string[] args)
{
Ascii_art(7);
}
static void Ascii_art(int input)
{
for (int i = 0; i < input; i++)
{
Console.SetCursorPosition(0, i);
Console.WriteLine("N");
}
for (int i = 1; i < input - 1; i++)
{
Console.SetCursorPosition(i, i);
Console.WriteLine("N");
}
for (int i = 0; i < input; i++)
{
Console.SetCursorPosition(input - 1, i);
Console.WriteLine("N");
}
Console.WriteLine();
}
}
}
while True:
number=int(input("Input an odd number: "))
if number==1:
print("N")
else:
print("N"+" "*(number-2)+"N")
for i in range(number-2):
print("N"+" "*i+"N"+" "*(number-3-i)+"N")
print("N"+" "*(number-2)+"N")
def Ascii_art(n):
assert n % 2 == 1, 'input odd number'
l = [' '] * n
for i in range(n):
l[0] = 'N'
l[-1] = 'N'
if (i >= 0 and i <= n-2):
l[i] = 'N'
print("".join(l))
l[i] = ' '
n=int(input());ans='N'+' '*(n-2)+'N\n'
if n==1:
print('N')
else:
for i in range(n-1):
if i==n-2:
ans+='N'+' '*i+'N'+' '*(n-i-3)
else:
ans+='N'+' '*i+'N'+' '*(n-i-3)+'N\n'
print(ans)
def draw_N(n):
s = 'N' + ' ' * (n-2) + 'N'
for i in range(n):
print(s[:i] + ['','N'][n>1] + s[i+1:])
N = int(input('Enter odd number : '))
if N == 1 : print('N')
else :
print('N' + ' ' * (N-2) + 'N')
for x in range(N-2) :
print('N' + ' '*x + 'N' + ' '*(N-3-x) + 'N')
print('N' + ' ' * (N-2) + 'N')
n=int(input("정수 입력: "))
g=list(" "*(n-2))
a=""
for i in g:
a=a+i
u=a
b="N"+a+"N"
j=0
print(b)
while j<n-2:
a=""
g[j]='N'
for i in g:
a=a+i
b="N"+a+"N"
print(b)
g[j]=' '
j +=1
b="N"+u+"N"
print(b)
import java.util.*;
public class ASCIIArtN {
public static void main(String[] args) {
int input = (new Scanner(System.in).nextInt());
StringBuffer Ns = new StringBuffer();
if(input==1) {
System.out.println("N");
}
else {
for(int j=0; j<input; j++) {
for(int i=0; i<input; i++) {
if(i==0||i==input-1) {
Ns.append("N");
}
else if(i==j) {
Ns.append("N");
}
else {
Ns.append(" ");
}
}
System.out.println(Ns);
Ns.delete(0, input);
}
}
}
}
k = int(input("INPUT : "))
s = [print('N'+(' '*i+'N').ljust(k)[1:-1]+'N') for i in range(0, k)]
한 줄로 해보고싶었는데, 쉽지가 않네요. 결과
INPUT : 5
N N
NN N
N N N
N NN
N N
num = int(input("행수 입력(홀수) : "))
if num % 2 == 1:
if num == 1:
print("N")
else :
print("N"+" "*(num-2)+"N")
for i in range(0,num-2) :
print("N"+" "*i+"N"+" "*(num-i-3)+"N")
print("N"+" "*(num-2)+"N")
else :
print("짝수로 입력하세요.")
on=input("홀수를 입력하십시오: ")
if int(on)%2==0:
print("잘못된 입력입니다. 짝수를 입력했습니다.")
else:
lst=["N"]
for i in range(int(on)-1):
lst.append(" ")
lst[-1]="N"
for i in range(int(on)):
nlst=lst[:]
nlst[i]="N"
print("".join(nlst))
def ascii(num):
for i in range(1, num+1):
print(''.join(['N' if (n == i) or (n == 1) or (n == num) else ' ' for n in range(1, num+1)]))
def main():
ascii(num=7)
if __name__ == '__main__':
main()
a = [' ']*int(input())
a[0],a[-1] = 'N','N'
print(str(a))
for i in range(1,len(a)-1):
b = a[:]
b[i] = 'N'
print(str(b))
print(str(a))
``````{.python}
a = [' ']*int(input(n))
a[0],a[-1] = 'N','N'
print(''.join(a))
for i in range(1,len(a)-1):
b = a[:]
b[i] = 'N'
print(''.join(b))
print(''.join(a))
처음껄 먼저 생각해냈는데 풀이들을 보니 더 깔끔하게 출력하는 방법이 있었네용 ㅎㅎ
Go 1.14.4
package main
import (
"fmt"
)
func Printn(n int) {
// 처음과 마지막 글자는 항상 출력
for line := 0; line < n; line++ {
for column := 0; column < n; column++ {
if column == 0 || column == n - 1 || line == column {
fmt.Print("N")
} else {
fmt.Print(" ")
}
}
fmt.Print("\n")
}
}
func main() {
var n int
fmt.Print("Input number: ")
fmt.Scanf("%d", &n)
Printn(n)
}
Python 3.8
(lambda n: print('\n'.join([''.join(['N' if column in (0, n - 1, row) else ' ' for column in range(n)]) for row in range(n)])))(int(input("숫자를 입력하세요: ")))
n=int(input("Enter a number: "))
def ASC2(n):
for i in range(n-2):
print("N"+i*" "+"N"+(n-3-i)*" "+"N")
def last(n):
if n==1:
print('N')
else:
print("N"+(n-2)*' '+' N')
ASC2(n)
print("N"+(n-2)*' '+' N')
last(n)
def ASCII_ART_N(numbers):
bottom=0
top=numbers-1
for i in range(bottom,top+1,1):
for j in range(bottom,top+1,1):
if j==top or j==bottom or j==i:
print("N",end="")
else:
print(" ",end="")
print("")
ASCII_ART_N(1)
ASCII_ART_N(3)
ASCII_ART_N(5)
ASCII_ART_N(7)
def asciart(n):
result = []
for i in range(n):
for j in range(n):
result.append(' ')
for k in range(n):
result[0] = 'N'
result[-1] = 'N'
result[i] = 'N'
print(''.join(result))
result = []
asciart(7)
n = int(input('Input Number: '))
for i in range(1, n+1):
for j in range(1, n+1):
if i == j or j == 1 or j == n:
print('N', sep='', end='')
else:
print(' ', sep='', end='')
print()
n = int(input("홀수인 양수만 입력하세요 : "))
i = 0
while i<n:
if n==1:
print('N')
elif i==1:
print('N', end='')
print('N', end=' '*(n-i-2))
print('N')
elif 1<i<(n-1):
print('N', end=' '*(i-1))
print('N', end=' '*(n-i-2))
print('N')
else:
print('N',end=' '*(n-2))
print('N')
i+=1
join 함수 쓸생각을 못했네..
import java.util.Scanner;
public class question {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("홀수를 입력해주세요: ");
int input = sc.nextInt();
for (int i = 0; i < input; i++) { // 0 1 2 3 4
for (int j = 0; j < input; j++) { // 0 1 2 3 4
if (j == 0 || j == input-1) {
System.out.print("*");
} else if (i == j) {
System.out.print("*");
} else {
System.out.print("_");
}
}
System.out.println("");
}
}
}
java
import java.util.Scanner;
public class CreateN {
public static void main(String[] args) {
System.out.println("숫자 대입했을 때 N만들기");
Scanner sc = new Scanner(System.in);
System.out.println("숫자를 입력해주세요. _ ");
int code = sc.nextInt();
if(code % 2 == 0) {
code++;
}
for (int i = 0; i < code; i++) {
for (int j = 0; j < code; j++) {
if(i == j || j == 0 || j == code - 1) {
System.out.print("N");
}else {
System.out.print(" ");
}
}
System.out.println("");
}
sc.close();
}
}
def naver(n) :
for i in range(n):
rep=''
if 0<i<n-1 :
rep +=' '*(i-1)
rep +='N'
rep +=' '*((n-2)-i)
else : rep += ' '*(n-2)
print(f'N{rep}N')
def Nmaker(n):
for i in range(n):
print(''.join(["N" if j in [0,i,n-1] else " " for j in range(n)]))
Nmaker(7)
추천 답안을 보고 배워갑니다!
#codingdojing_artN
N = eval(input('N: '))
for i in range(N):
for j in range(N):
if j == 0:
print('N', end = '')
elif j == i:
print('N', end = '')
elif j == (N-1):
print('N')
else:
print(' ', end = '')
def ASCLL_Art_N(a):
for i in range(a):
for c in range(a):
if c == 0 or c == i or c == a-1:
print('N',end = '')
else:
print(' ', end = '')
print()
if __name__ == '__main__':
a = int(input())
ASCLL_Art_N(a)
while True:
a= int(input("홀수를 입력 하시오"))
if a%2 ==1:
break
def N_make(a):
for j in range(a):
if (j == 0 or j==a-1) and a>1:
k=0
else:
k=1
print('{0}{1}{2}{3}{0}'.format("N"*(a>1)," "*(j-1),"N"*k," "*(a-j-2)))
N_make(1)
N_make(3)
"N"*(a>1) 에서 boolean 을 이용해봤습니다
_odd = int(input())
_N = "N"
_S = " "
for i in range(0,_odd):
for j in range(0,_odd):
if j == 0 or j == (_odd-1) : print(_N, end='')
elif i == j : print(_N, end='')
else : print(_S, end='')
print("")