if문 사용해서 8개의 패턴을 모두 프린트 하기

조회수 330회

java입니다. if문을 사용해서

XOXOXO---
XOXOXOX--
XOXOXO-X-
XOXOXO--X
XOXOXOOX-
XOXOXO-XO
XOXOXOOXX
XOXOXOXXO

이렇게 여덟개를 모두 프린트 하려고 하는데 "-"로 9칸 모두, 즉 --------- 를 입력 할 경우 이 여덟개를 다 프린트를 하도록 코드를 작성해야하면 if문을 어떻게 작성해야 하나요?

감사합니다

  • 이게 틱텍토 라는 게임인데 "-"로 9칸은 X랑 Y가 아무것도 없을때 즉 빈칸일때를 말하는거에요. 그냥 과제에 저 8 줄을 다 프린트 해야한다고 써져 있네요. 다이앤 2022.11.30 13:48

1 답변

  • 한 네 번 보니까 이해가 되는데 문제가 아주 거지발싸개 같네요.


    받으신 문제는 이걸 묻고 있습니다.

    지금 틱택토 게임을 하고 있다. 이미 총 6수를 둔 상태다. 이제 X의 차례다. 일단 현재 상황을 프린트한 다음, 그 상황으로부터 게임이 끝나는 모든 경우 각각의 모든 진행상황 전개를 출력하시오.

    진행상황을 표기하기 위해 총 9자의 문자열을 사용한다. 그 문자열의 ((a-1)*3)+(b-1)번 인덱스는 게임판의 a행 b열에 둔 수를 표기한다. 이를테면 0번 인덱스의 문자는 1행 1열에 둔 수를 표기한 것이고, 8번 인덱스의 문자는 3번줄 3째칸에 둔 수를 표기한 것이다. 아무도 수를 두지 않은 칸은 -로 표기한다.

    그렇다면 맨 첫줄은 사실 틱택토 게임을 여기까지 한 것을 저렇게 (거지발싸개같이) 표현한 겁니다.

    X O X
    O X O
    - - -
    

    그리고 두번째 줄을 보면 확실히 저 상황에서는 틱택토 게임이 X의 승리로 끝나죠.

    X O X
    O X O
    X - -
    

    근데 세번째 줄의 경우는 틱택토 게임이 안 끝난 상황입니다.

    X O X
    O X O
    - X -
    

    그러면 어떻게 할까요? 모범답안을 보면, 일단은 아직 안 채워 본 칸에 X를 두는 출력이 나오는군요.

    X O X
    O X O
    - - X
    

    여기까지 왔을 때를 생각해 보면, 아직 게임이 안 끝난 경우는 하나뿐입니다. X를 가운데 놨던 상태죠. 이제 문제는 이렇게 바뀝니다.

    지금 틱택토 게임을 하고 있다. 이미 총 7수를 둔 상태다. 이제 O의 차례다. 그 상황으로부터 게임이 끝나는 모든 경우 각각의 모든 진행상황 전개를 출력하시오.

    뭐만 조금 바뀌고 어디서 많이 본 거 같죠? 이 부분은 나중에 다시 언급하겠습니다. 암튼 그러면 이제 또 뭘 출력해야 된다고 나오죠?

    X O X
    O X O
    O X - (*아직 승패가 나지 않은 상황이므로 일단 넘어감)
    
    X O X
    O X O
    - X O (*아직 승패가 나지 않은 상황이므로 일단 넘어감)
    

    이제 또 문제는 이렇게 바뀝니다. 게임이 안 끝난 경우가 2가지 발견됐으니까요.

    지금 틱택토 게임을 하고 있다. 이미 총 8수를 둔 상태다. 이제 X의 차례다. 그 상황으로부터 게임이 끝나는 모든 경우 각각의 모든 진행상황 전개를 출력하시오.

    나머지는 생략하겠습니다. 다 세어 보면 결국 8줄입니다. 출력해야 할 내용이 하필 8개인 이유는 여기 있습니다.


    "뭐만 조금 바뀌고 어디서 많이 본 거 같"은 작업이 바로 그 앞전 "뭐만 조금 바뀌고 어디서 많이 본 거 같"은 작업 때문에 발생하고 있다면 그런 작업은 아주 높은 확률로 재귀적인 작업입니다. 재귀가 뭐냐는 설명을 못드리겠지만 그간 대충 해본 느낌상으로는...

    • 더 큰 작업이 작은 작업에게 넘겨주면서 바뀌는 게 뭔지
    • 작업 규모와 상관없이 늘 반복되는 일이 뭔지
    • 어떤 경우에 일이 끝나 버리는지
    • 어떤 경우에 자기보다 더 작은 작업에게 일을 넘겨줘야 하는지
    • 결국 누가 누구에게 뭘 돌려줘야 하는 건지

    등을 봐 가면서 머리를 잘 써서 구현해야 하는 거더군요. 그래서 누구한테 대신 코딩해 달라고 할 수 있는 구현이 아닙니다. 남이 만든 재귀 구현을 이해하거나 고치기는 상당히 어렵거든요. 애초에 이 문제는 "게임이 쇼부가 났는가?"도 판정해야 하고.. 재귀 출력 순서도 좀 신경써야 하고.. 등등 재귀 자체 외의 머리 아픈 일이 더 있고 말이지요.

    "왜 하필 이 과제는 이런걸 출력하라고 했을까" "이게 틱택토와 무슨 상관일까" 궁금해해봤다가 얼떨결에 여기까지 왔네요. 질문자님은 어디까지 궁금해해 보셨을지 궁금합니다. 내 과제도 아닌데 내가 뭐라고 이걸 이렇게까지 궁금해했나 궁금해질 지경이군요. 그런 이유로 저는 이쯤에서 물러나겠습니다 탐구심을 잃지 마세용~~ 화이팅~~!!

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)