일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 스프링 security
- 양재천 오리
- 파이브 스타즈 후기
- 데스나이트 키우기
- 데스나이트 키우기 매크로 소스파일
- 로그스태쉬
- 정보보호병 후기
- 데스나이트 키우기 매크로
- 해군
- 토큰 만드는법
- 정보보호병 프로그래밍
- logstash cubrid 설정
- 파이브 스타즈
- 코로나 19 견디기
- logstash 설정
- 파이썬
- 양재천 장마 피해
- 파이브 스타즈 사전예약
- jwts 토큰
- token provider 구현
- 데스나이트 키우기 쿠폰 정리글
- 멀티 파이프 라인
- Jwts 토큰 만들기
- spring boot token provider
- 정보보호병
- 스프링 로그인 기능 만들기
- 양재천 사진
- jwt 토큰 생성
- 퇴직 라이프
- 정보보호병 개발
Archives
- Today
- Total
InTen
프로그래머스 월간 코드 챌린지 2번 문제 본문
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
[
코딩테스트 연습
기초부터 차근차근, 직접 코드를 작성해 보세요.
programmers.co.kr
](https://programmers.co.kr/learn/challenges)
프로그래머스 쪽 대회 관련 글들을 살펴보니 문제의 대한 해설 또는 글에 대한 제제가 없는것으로 확인되어서 글을 씁니다.
광고는 제거 하였고 비영리성을 띄게 게시글을 전환해 두었습니다.
문제가 있을시 비공개 처리하겠습니다.
2번 문제의 그림이다.
2차원 배열 안에 그림과 같이 넣는 방식인데
비슷한 문제로는 달팽이 사각형이라는 문제가 있다.
해결한 코드는
def solution(n):
board = [[0]*n for y in range(n)]
answer = []
x, y, cnt=0, -1, 1
while True:
for i in range(0,n):
y += 1
board[y][x]=cnt
cnt += 1
n -= 1
if n<=0:
break
for j in range(0,n):
x += 1
board[y][x] = cnt
cnt += 1
n -= 1
if n<=0:
break
for i in range(1,n+1):
y -= 1
x -= 1
board[y][x]=cnt
cnt +=1
n -= 1
if n<=0:
break
for i in board:
for j in i:
if j != 0:
answer.append(j)
return answer
위의 코드와 같은데 코드 속도가 느릴꺼라는 생각과는 달리 잘 동작하기에 개선은 하지 않았다.
달팽이 사각형 문제는 x,y 좌표를 변환하는 식이 4개인것과 달리 삼각형은 3개의 식으로만 구성되어서 오히려 더 쉽게 구현 가능하다.
위의 그림처럼 알고리즘의 개념만 잡는다면 쉽게 구현 가능하다.
3~4번 문제는 정확하게 기억이 나지 않아서 코드를 다시 복구하게 된다면 게시글 작성을 하겠습니다.
'프로그래밍 > 파이썬' 카테고리의 다른 글
[파이썬 3.x] 엘리베이터 문제 (2) | 2020.12.12 |
---|---|
데스나이트 키우기 매크로 소스 파일 (0) | 2020.09.20 |
프로그래머스 월간 코드 챌린지 문제 1 번 코드 (0) | 2020.09.12 |
[Python 3.x] 파이썬 배열 입력 정리 (0) | 2020.08.29 |
[Python 3.x] 파이썬 다운로드 설치 & 환경 변수 세팅 (0) | 2020.08.28 |
Comments