incastle의 콩나물
코딩 테스트 준비 잡다 팁 본문
1. 후보키 문제
relation=[["100","ryan","music","2"],
["200","apeach","math","2"],
["300","tube","computer","3"],
["400","con","computer","4"],
["500","muzi","music","3"],
["600","apeach","music","2"]]
내가 고민했던 건 '열'이라는 정보를 어떻게 뽑지? numpy를 안쓰고 어떻게 하지?
for v in relation:
for i, item in enumerate(v):
print(i, item)
print('------')
0 100
1 ryan
2 music
3 2
------
0 200
1 apeach
2 math
3 2
------
0 300
1 tube
2 computer
3 3
------
0 400
1 con
2 computer
3 4
------
0 500
1 muzi
2 music
3 3
------
0 600
1 apeach
2 music
3 2
------
enumerate가 있었다!
2. list안에 두 개씩 묶어서 넣는 걸 은근 많이 사용한다.
3. 문자열을 처리할 때 숫자를 list로 바꾸면서 1의 자리는 상관 없는데 10 자리의 의미를 살리고 싶을 때가 있다.
dartResult='1D2S#10S'
point = []
dartResult = dartResult.replace('10','k')
point = ['10' if i == 'k' else i for i in dartResult]
print(point)
1) 원하는 정보를 한 자리 수의 다른 문자로 token화를 해주고 list로 변경한다
2) 그 결과에서 한 자리 문자를 다시 숫자로 바꿔준다.
4.
and나 or을 써서 if 문을 만들 때
(완벽한 조건) and (완벽한 조건)을 사용하자
5. 2진수 이용할 때 꿀팁
bin함수를 이용할 때 다양한 연산자들이 존재한다. 잘 사용하면 진짜 꿀임
6. if문 만들 때
def solution(str1, str2):
list1 = [str1[n:n+2].lower() for n in range(len(str1)-1) if str1[n:n+2].isalpha()]
list2 = [str2[n:n+2].lower() for n in range(len(str2)-1) if str2[n:n+2].isalpha()]
tlist = set(list1) | set(list2)
res1 = [] #합집합
res2 = [] #교집합
if tlist:
for i in tlist:
res1.extend([i]*max(list1.count(i), list2.count(i)))
res2.extend([i]*min(list1.count(i), list2.count(i)))
answer = int(len(res2)/len(res1)*65536)
return answer
else:
return 65536
생성한 list안에 원소가 있냐 없냐를 if list:를 사용해서 깔끔하게
7. rjust 함수
오른쪽 정렬은 rjust 라는 함수를 사용하고, 왼쪽 정렬은 ljust 라는 함수를 사용
예를 들어서 다음과 같은 조건이 있다고 하면.
1. 문자열 a에 값 "123"이 입력되어 있음
2. 문자열 a를 크기가 10인 문자열로 만들고, 오른쪽으로 정렬하고 싶음
이때 사용할 수 있는 함수는 rjust가 되겠죠.
간단하게 소스로 나타내보면 다음과 같습니다.
a = "123"
print a.rjust(10)
결과 = ' 123'
출처: https://ngee.tistory.com/397 [ngee]
a = "123"
print a.rjust(10, '#')
결과 = '#######123'
8. replace 함수
replace를 까먹고 계속 if문을 사용한다. 코드를 간략하게 사용하자!
변수.replace(원본,바꿀형식)
9. 반올림
반올림 하는 문제가 나올 수 있다고 해서
round(3.123456, 2)
10. list안에 list
a= [ [1,2], [3,4] ]
일 때 for 문을 돌리면
for i,k in a:
이렇게 i, k 할 수 있다는 거 계속 까먹는다!!!
11. append만 사용하는데 pop이나 insert도 잘 써먹자!!!
12.
budgets = [120,110,140,150]
M = 485
while True:
if sum(budgets)<M:
answer=max(budgets)
break
budgets=list(map(lambda x: x if x<=lim else lim,budgets))
print(budgets)
lim=lim-1
while문 안에서 돌아가는 모습
'python > 알고리즘' 카테고리의 다른 글
[알고리즘] 백준 1966번, 프린터 큐, 정렬, python(21) (0) | 2020.04.05 |
---|---|
[알고리즘] 백준 1427번, 나이순 정렬 , 정렬, python(20) (0) | 2020.03.10 |
[알고리즘] 백준 1427번, 소트인사이드 , 정렬하기, python(19) (0) | 2019.04.15 |
[알고리즘] 빠르게 산 오르기, 최적 부분 문제+ greedy, python(18) (0) | 2019.04.15 |
[알고리즘] 거듭제곱 계산 하기, 재귀 함수, python(17) (0) | 2019.04.14 |
Comments