티스토리 뷰
반응형
문제: programmers.co.kr/learn/courses/30/lessons/1835
필자는 해당 문제를 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
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[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
- 2021 KAKAO BLIND RECRUITMENT
- docker-compose
- dockerignore
- postgres
- Celery
- Java
- Collections
- Python
- 카카오
- 그래프
- 면접
- PostgreSQL
- 자바
- thread
- headers
- BFS
- Command Line
- env
- docker
- setattr
- Pattern
- 알고리즘
- ubuntu
- 프로그래머스
- Spring
- Linux
- DRF
- 백준
- django
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함