코딩도장

Printing OXs

앞의 문제들 중 비슷한 알고리즘이 있던 것 같지만, 같은 건 없다고 생각해서 올립니다. 문제를 푸는데 많은 approach가 있을 듯 싶습니다. 이 문제의 핵심은 비트 연산을 얼마나 잘 이해하고 있냐이기 때문에 비트 연산으로 풀어주세요.

input은 int n을 입력 받아 첫번째 row는 (n-1)의 O와 X, 두번째 row는 (n-2)의 O와 XX, 세번째 row는 (n-3)의 0와 XXX... n번째 row는 n의 X을 출력하시오.

입력 예시: 6

출력 예시:


OOOOOX

OOOOXX

OOOXXX

OOXXXX

OXXXXX

XXXXXX


비트연산 bit control
(追記) (追記ここまで)
댓글 작성은 로그인이 필요합니다.
비트연산은 0,1의 이진수에서만 가능한 것으로 알고 있는데요 비트연산으로 이 문제를 푸는 것이 가능한가요? 풀이를 봐도 비트로 해결한 건 없어보여서 질문 남깁니다 - myyh2357, 2018年10月02日 20:12 M D
+1 # python n = int(input()) tmp = 2**n-1 for i in range(n): print(bin(tmp<<(i+1))[-n:].replace('1','O').replace('0','X')) - Creator, 2018年10月03日 16:08 M D
파이썬에서 이진수의 1을 'O' 0을 "X"로 반환하고 비트연산 '시프트'를 이요하면 풀 수 있습니다. https://dojang.io/mod/page/view.php?id=2460 코딩도장 비트연산 개념 링크 확인 부탁 드려요 - 김보라, 2022年07月13日 15:53 M D
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

26개의 풀이가 있습니다. 1 / 3 Page

public static void main(String[] args) {
 int input = Integer.valueOf(new Scanner(System.in).nextLine());
 for (int i = 0; i < input; i++)
 System.out.println(
 String.format("%0" + input + "d", Integer.valueOf(Integer.toBinaryString(
 (int) (Math.pow(2, i + 1) - 1)))).replaceAll("0", "O").replaceAll("1", "X"));
 }

2018年09月12日 20:38

김지훈

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

수줍게 자바코드 올리고 갑니다......

import java.util.Scanner;
public class printfing_oxs {
 public static void main(String[] args) {
 Scanner sc = new Scanner(System.in);
 int line, i, j, k;
 while(true){
 System.out.print("input number of line : ");
 line = sc.nextInt();
 if(line > 0)
 break;
 else
 System.out.println("input number that bigger than '0'");
 }
 for(i = 0 ; i < line ; i++){
 for(j = 0 ; j < line-(i+1) ; j++){
 System.out.print("O");
 }
 for(k = 0; k < line - j ; k++){
 System.out.print("X");
 }
 System.out.println();
 }
 }
}

2015年12月18日 16:17

Jae Hyunwoo

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

자바입니다

 public static void main(String[] args) throws Exception {
 Scanner scan = new Scanner(System.in);
 int n = Integer.parseInt(scan.nextLine());
 for (int i = 0; i < n; i++) {
 StringBuilder sb = new StringBuilder();
 for (int j = 0; j < n - (i + 1); j++) {
 sb.append("O");
 }
 for (int j = 0; j < i + 1; j++) {
 sb.append("X");
 }
 System.out.println(sb.toString());
 System.out.println();
 }

2016年03月07日 16:29

Hyunwoo Jeon

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
void printOX(int n) {
 int i, j ,k;
 for(i=0; i<=n; i++) {
 for(j=0; j<=n-i-1; j++) {
 System.out.print("O");
 }
 for(k=0; k<=n-j; k++) {
 System.out.print("X");
 }
 System.out.println();
 }
 }

java

2016年03月18日 06:27

mozzi

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
public void printOXs(int n){
 for(int i = 0 ; i < n ;i++){
 for(int j = i ; j < n-1 ;j++) {
 System.out.print("O");
 }
 for(int k = 0 ; k <= i ; k++) {
 System.out.print("X");
 }
 System.out.println("");
 }
 }
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

자바로 코딩
1. 입력받은 수만큼 0 으로 채움
2. String 배열로 split
3. 맨 뒤에 부터 루프 돌면서 x 로 채움

 public static void main(String[] args){
 String o = "0";
 String x = "x";
 int inputNumber = 0;
 String text = "";
 String[] textArray;
 Scanner sc = new Scanner(System.in);
 System.out.print("입력 :: ==> ");
 inputNumber = sc.nextInt();
 for(int i=0; i<inputNumber; i++){
 text += o;
 }
 textArray = text.split("");
 for(int i=textArray.length-1; i>=0; i--){
 textArray[i] = x;
 for(int j=0; j<textArray.length; j++){
 System.out.print(textArray[j]);
 }
 System.out.println("");
 }
 sc.close();
 }

2016年08月02日 10:59

황 정석

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
 public static void main(String[] args) {
 Scanner sc = new Scanner(System.in);
 System.out.print("값 입력 : ");
 int num = sc.nextInt();
 for(int i= 1; i<=num; i++){
 for(int j=0; j<num; j++){
 if(num-i<=j) System.out.print("x");
 else System.out.print("o");
 }
 System.out.println();
 }
 }
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
public class Printing {
 public static void prn(int n) {
 for (int i = 0; i <= n + 1; i++) {
 if (i == 0 || i == n + 1)
 continue;
 for (int j = 0; j < n - i; j++) {
 System.out.print("O");
 }
 for (int j = 0; j < i; j++) {
 System.out.print("X");
 }
 System.out.println("");
 }
 }
 public static void main(String[] args) {
 prn(6);
 }
}
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
import java.util.*;
public class printingOX {
 public static void OXtest(int x){
 String result = "";
 for (int i =0;i<x;i++){ 
 String blank ="";
 for(int k=0;k<x-(i+1);k++){blank += "O";}
 for(int l=0;l<i+1;l++){blank += "X";}
 result += blank +"\n";
 } 
 System.out.println(result); 
 }
 public static void main(String[] args){
 Scanner sc = new Scanner(System.in);
 int x = sc.nextInt(); 
 printingOX.OXtest(x);
 }
}

2017年03月13日 21:00

Kim Da Seul

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
import java.util.Scanner;
import java.util.stream.IntStream;
import static java.lang.System.in;
public class PrintingOXs {
 public static void main(String[] args) {
 int n = new Scanner(in).nextInt();
 IntStream.range(0, n).forEach(i -> IntStream.range(0, n).forEach(j -> {
 System.out.print(j + i >= (n - 1) ? "X" : "O");
 if (j == n - 1) System.out.println("");
 })
 );
 }
}

2017年03月14日 10:38

genius.choi

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

풀이 작성

(注記) 풀이작성 안내
  • 본문에 코드를 삽입할 경우 에디터 우측 상단의 "코드삽입" 버튼을 이용 해 주세요.
  • 마크다운 문법으로 본문을 작성 해 주세요.
  • 풀이를 읽는 사람들을 위하여 풀이에 대한 설명도 부탁드려요. (아이디어나 사용한 알고리즘 또는 참고한 자료등)
  • 작성한 풀이는 다른 사람(빨간띠 이상)에 의해서 내용이 개선될 수 있습니다.
풀이 작성은 로그인이 필요합니다.
목록으로
코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.

비트연산 x 1
bit control x 1

언어별 풀이 현황
전 체 x 284
python x 204
java x 26
cs x 5
php x 5
objectivec x 2
ruby x 1
기 타 x 31
cpp x 8
javascript x 2
코딩도장 © 2014 · 문의 [email protected]
피드백 · 개인정보취급방침 · RSS

AltStyle によって変換されたページ (->オリジナル) /