티스토리 뷰
반응형
문제: programmers.co.kr/learn/courses/30/lessons/1835
코딩테스트 연습 - 단체사진 찍기
단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두
programmers.co.kr
필자는 해당 문제를 c++로 풀어 통과했지만 파이썬으로 변환하여 코드를 소개하겠습니다.
import itertools
n=2
data= ["M~C<2", "C~M>1"]
mem = ['A','C','F','J','M','N','R','T']
pairs = list(map(list,itertools.permutations(mem,8)))
count=0
for pair in pairs: ## 한 개의 조합에 대하여 기준을 평가 하는 경우가 더 빠르다. 조합->기준
for check in data:
first,second,case,num=check[0],check[2],check[3],int(check[4])
n1=pair.index(first)
n2=pair.index(second)
if case=='=':
if int(abs(n1-n2))-1!=num:
count+=1
break
elif int(abs(n1-n2))-1>=num:
count+=1
break
elif int(abs(n1-n2))-1<=num:
count+=1
break
print(len(pairs)-count)
이 문제에서 핵심 내장 함수는 itertools 안에 있는 permutations(순열) 이다.
itertools에 대한 메소드들을 알아두면 요긴하게 잘 쓸 수 있으므로 알아두는 것을 추천한다.
c++로서는 next_permutation 이 있다.( #include<algorithm>)
해당 메소드를 쓰면 리스트 안에 있는 원소를 기준으로 순열을 만들어낸다.
그런 다음에 data안에 있는 기준에 적합성 유무를 판단하고 부적절하다면 갯수를 센다.
마지막에 len(pairs)-count를 하면 된다.
itertools 관련 정보: docs.python.org/ko/3/library/itertools.html
itertools — 효율적인 루핑을 위한 이터레이터를 만드는 함수 — Python 3.9.1 문서
docs.python.org
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers] [레벨3] 야근지수 (0) | 2021.10.29 |
---|---|
2020 카카오 인턴십 수식 최대화 (0) | 2021.02.08 |
2019 카카오 개발자 겨울 인턴십 튜플 (0) | 2021.02.05 |
2020 KAKAO BLIND RECRUITMENT괄호 변환 (0) | 2021.02.03 |
2017카카오코드 예선 카카오프렌즈 컬러링북 파이썬 (0) | 2021.02.03 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준
- env
- Celery
- headers
- docker-compose
- 파이썬
- 2021 KAKAO BLIND RECRUITMENT
- django
- Spring
- Java
- DRF
- 그래프
- Collections
- docker
- thread
- Python
- ubuntu
- 카카오
- PostgreSQL
- postgres
- Pattern
- 프로그래머스
- Command Line
- dockerignore
- Linux
- 자바
- setattr
- BFS
- 알고리즘
- 면접
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함