본문 바로가기
언어별 개념 정리/Python

[Python] 알고리즘 풀이 시 유용한 함수 사용 팁 (map, join 등)

by char_lie 2023. 4. 29.
반응형

1. 2차원 배열에서 최대값 & 최소값 & 합 구하기 (Map 함수 활용)

- map 함수의 기본 구성은 map(function,iterable)
- function 부분에 다른 기능을 추가해서 2차원 리스트에 적용 할 수 있음.
# 2차원 배열에서 반복문을 사용하지 않고 특정 값 구하기
x = [[1,0,-30,6,5],[3,4,7,8,1],[3,2,6,7,1],[-1,2,3,6,8],[99,1,2,3,6,8]]

print(max(map(max, x))) # 최대값 99
print(min(map(min, x))) # 최소값 -30
print(min(map(max, x))) # 내부 배열의 최대 값들 중에서 가장 작은 값 6
print(max(map(min, x))) # 내부 배열의 최소 값들 중에서 가장 큰 값 1
print(sum(map(sum, x))) # 2차원 배열의 모든 값의 합​

2. 리스트를 특정 조건에 맞게 출력할 때 (Join 함수 활용)

- 백준 문제 풀이시 요구사항대로 출력해야 할 경우 사용
- 한줄로 이어쓰거나, 여러줄로 분할해서 써야 할 경우 사용
# join 함수는 내부 요소들이 Str 타입일 경우만 가능!
y = [0,1,2,2,3]

print(''.join(map(str,y))) # 01223
print(','.join(map(str,y))) # 0,1,2,2,3
print('\n'.join(map(str,y)))
```
0
1
2
2
3
```​

3. 원하는 크기에 해당하는 값만 출력해 리스트로 만들 경우 (할당 연산자 활용)

- 파이썬 3.8부터 사용 가능한 할당연산자 := 사용
- :=를 활용시 코드를 많이 줄일 수 있음
- 대표적으로 아래 링크의 문제에서 활용 가능
[i for _ in range(N) if len(i:= input()) >= M]​

- 위처럼 구성시 길이가 M 이상인 값을 리스트로 저장 가능

https://www.acmicpc.net/problem/20920

 

20920번: 영단어 암기는 괴로워

첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단

www.acmicpc.net

반응형

4. 2차원 리스트 안의 특정 요소 갯수 세기

2차원 리스트 안의 특정 갯수를 세고자 할 때 활용하면 좋은 방법
일반적인 방법보단 sum이나 map함수를 사용하면 줄이기 좋음
# 0의 갯수를 셀 경우
y = [[1,0,0,0,1],[1,1,1,0,1],[1,0,1,1,0],[1,1,1,0,0],[0,1,1,1,1]]

# 일반적인 반복문
count = 0
for i in y:
    for j in i:
        if j == 0:
            count += 1
print(count) # 9

# sum을 활용한 방법
count = sum([row.count(0) for row in y])
print(count) # 9

# map과 lambda를 활용한 방법
count = sum(map(lambda x: x.count(0), y))
print(count) # 9

 

반응형

댓글