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
284개의 풀이가 있습니다.
29 / 29 Page
number = input("숫자입력 : ")
n = int(number)
O_numb = n
X_numb = 0
for i in range(n):
O_numb -= 1
X_numb += 1
if O_numb >= 0 and X_numb <= n:
print('O'*O_numb + 'X'*X_numb)
else:
break
n, getBin = int(input('입력:')), lambda x: f'{int('1'*n,2) & int('1'*n,2) << x :0{n}b}'
_ = [print(getBin(i+1).replace('1','O').replace('0','X')) for i in range(n)]
> 입력: 6
> OOOOOX
> OOOOXX
> OOOXXX
> OOXXXX
> OXXXXX
> XXXXXX
def ox_row():
n = int(input("Enter the integer : "))
for i in range(n):
j = n-i-1
print("O"*j+"X"*i)
n = int(input("숫자를 입력하시오:"))
for i in range(1,n+1):
m = (1<<i)-1
for j in range(n-1,-1,-1):
if m & (1<<j):
print("X",end="")
else:
print("O",end="")
print()
풀이 작성
※(注記) 풀이작성 안내
- 본문에 코드를 삽입할 경우 에디터 우측 상단의 "코드삽입" 버튼을 이용 해 주세요.
- 마크다운 문법으로 본문을 작성 해 주세요.
- 풀이를 읽는 사람들을 위하여 풀이에 대한 설명도 부탁드려요. (아이디어나 사용한 알고리즘 또는 참고한 자료등)
- 작성한 풀이는 다른 사람(빨간띠 이상)에 의해서 내용이 개선될 수 있습니다.
풀이 작성은 로그인이 필요합니다.