본문 바로가기

코딩테스트166

[ 파이썬(Python) ] 2차원 행렬에서 세로로 최대값, 최소값 갱신하기 📍 2차원 행렬에서 세로로 최댓값, 최솟값 갱신하기 세로 R, 가로 S인 2차원 행렬에서 세로로 최대값과 최솟값을 갱신할 때 어떻게 할까? 예를 들어 다음과 같은 2차원 행렬이 있다고 가정해보자. ''' R, S = 10, 4 x... xx.. .xx. ..xx ...x .... #... ##.. .##. ..## ...# ''' 여기서 x일 때 각 세로축에서의 최대값, #일 때 각 세로축에서의 최소값을 구하려면 다음과 같이 구할 수 있다. 다음과 같이 가로길이만큼 빈 리스트를 선언해준 다음 현재 좌표가 x 일 때 해당하는 열을 빈리스트의 index로 사용한다. 이때 비교해야하는 값은 i(row)다. 높이는 row값이기 때문이다. min값도 마찬가지로 해당하는 열을 index로 사용하고 그때의 row값을.. 2021. 5. 27.
[ 파이썬(python) ] 백준 10703 - 유성 📍 백준 10703 - 유성 백준 10703 - 유성 ⚡️ 나의 풀이 이 문제는 내가 구현력이 부족하여 3일 동안 붙잡고 있었다. 지금 정답 판정을 받고 복습 겸 글을 작성하면서 느끼는 건 정답 코드를 볼 땐 금방 풀 수 있을 것 같은데 막상 풀 때는 왜 그렇지 못할까?!라는 생각이 든다. 중간에 move를 계산하는 과정에 막혀 질문을 올렸는데 고수분께서 명쾌한 답변을 해주셔서 너무 감사했다. 문제를 다 풀고 그분의 코드를 보니까 이렇게도 생각 할 수 있구나..! 대박인데?!라고 생각했다. 나도 언젠가 고수가 되어 모르는 분들이 올리는 질문을 자유자재로 답변해주는 수준까지 올라가리라.. 이번 문제를 풀며 배운점은 여러 가지 있지만 중요하다고 생각하는 내용들만 가져왔다. 문자열 리스트를 입력받을 때 [li.. 2021. 5. 27.
[ 파이썬(python) ] 백준 2309 - 일곱 난쟁이 📍 백준 2309 - 일곱 난쟁이 백준 2309 - 일곱 난쟁이 ⚡️ 나의 풀이 브루트 포스(brute force)유형 문제인데 핵심은 다음과 같다. 아홉 난쟁이의 키는 모두 다르지만 그중 일곱 난쟁이의 크기의 합은 100이 된다. 즉, sum(arr) - (난쟁이1 + 난쟁이2) == 100과 같은 말이다. 그런데 몇 번 난쟁이가 들어가야 할지 모르기 때문에 모든 경우의 수를 찾아야한다. sum(arr) - (arr[i] + arr[j]) == 100이 되면 해당 난쟁이를 새로운 변수로 넣어두고 마지막에 arr에서 제거한다. sum(arr) - (arr[i] + arr[j]) == 100이 되면 반복문을 한번 더 선언하고 해당 난쟁이를 제외하고 출력 후 exit()로 빠져나온다. break문을 사용하게.. 2021. 5. 26.
[ 파이썬(python) ] 백준 20291 - 파일 정리 📍 백준 20291 - 파일 정리 백준 20291 - 파일 정리 ⚡️ 나의 풀이 확장자 뒤의 값만 담을 defaultdict 변수를 선언한다. 공백을 기준으로 분리(split())한다. 동일한 확장자(split()[1])가 입력으로 들어오면 defaultdict에 1씩 더한다. dic.items()를 sorted한다. ' '.join을 사용하여 출력한다. from collections import defaultdict import sys input = sys.stdin.readline n = int(input()) dic = defaultdict(int) for _ in range(n): file = input().rstrip().split('.')[1] dic[file] += 1 for i in sor.. 2021. 5. 24.
[ 파이썬(python) ] 백준 9093 - 단어 뒤집기 📍 백준 9093 - 단어 뒤집기 문제: 백준 9093 - 단어 뒤집기 💡 나의 풀이 입력 전체를 뒤집는 것이 아니고 공백을 기준으로 나누고 해당 단어만 뒤집어서 출력하는 문제다. 반복문을 선언하여 i[::-1]를 사용하는 방법과 lambda 를 사용해서 뒤집는 방법 총 2가지로 나누어서 풀었다. import sys input = sys.stdin.readline T = int(input()) # 반복문 선언 for _ in range(T): result = ' '.join([i[::-1] for i in input().split()]) print(result) # 람다 함수 선언 for _ in range(T): print(' '.join(map(lambda x: x[::-1], input().spli.. 2021. 5. 24.