[Python] 코딩 도장 - 다음 디브온 코드골프 문제
Updated:
코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.
코딩 도장에서 여러 문제를 확인할 수 있습니다.
난이도 순으로 차근차근 풀어보려 합니다.
[문제: 다음 디브온 코드골프 문제] - Lv.2
디브온에서 미니대안언어축제가 진행되던 M2 밖에 텍스트큐브 부스에서 재미있는 코드골프 문제 풀기가 있었습니다.
150자 이하로 푸신 분들에게는 즉석에서 제공되는 원두커피와 텀블러가 상으로 주어졌다고 합니다.
문제는 아래와 같습니다. 이 결과가 나와야 하는데 언어 제약은 없답니다.
*
*
* *
* *
* *
** **
* *
* *
* *
*
*
출처: https://codingdojang.com/scode/433?answer_mode=hide
[풀이]
for i in range(11):
lst = [" "] * 11
n = abs(5-i)
lst[10-n] = "*"
lst[n] = "*"
print("".join(lst))
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
*
패턴을 찾아서 출력하고 싶은데 느낌은 오는데.. 구현을 못하겠다
아쉬운대로 마름모라도 출력해보았다…
[추천 풀이]
r = range(-5,6)
for y in r:
l=""
for x in r:
a,b=abs(x),abs(y)
l+=(" ","*")[a+b==4or(5,0)in[(a,b),(b,a)]]
print(l)
*
*
* *
* *
* *
** **
* *
* *
* *
*
*
코드부터 살펴보면 (결과1, 결과2)[조건식]
으로 입력하면 조건식이 참이면 결과2, 아니면 결과1이 나온다고 한다.
r = range(-5,6)
for y in r:
l=""
for x in r:
a,b=abs(x),abs(y)
l+=(" ","*")[a+b==4]
print(l)
*
* *
* *
* *
* *
* *
* *
* *
*
처음 풀이에서 뒤의 조건을 제거했을 때 모습이다.
a + b가 4인 경우만 별표를 추가하므로 작은 마름모가 나온 형태이다.
여기에 조건을 추가해서 마름모의 각 모서리 끝에 별표를 추가한 것이다.
r = range(-5,6)
for y in r:
l=""
for x in r:
a,b=abs(x),abs(y)
l+=(" ","*")[a+b==5]
print(l)
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
*
a + b를 5로 바꾸면 내가 만든 마름모와 같은 형태가 나타난다.
Leave a comment