어... 초심자 치고 나름 잘 풀고 있다고 생각했는데 종합점수 39.7점....?
고등학생 때 처음 수학 시험 보고 나서 놀랐던 기분을 다시 느끼게 될 줄이야....
자료구조, 탐색, 정렬이 부족하다고 큐, 트리, 이분탐색을 추천해줬다.
그렇구나! 50점이 넘는 것이 없구나!
알겠다. 풀어보겠다.
바탕화면 정리라는 문제를 추천해줬습니다.
최소한의 영역만 선택되는 좌표를 리턴해주라는 말 같네요. 파이썬으로 풀어보겠습니다
def solution(wallpaper):
answer = []
for i in range(len(wallpaper)):
for j in range(len(wallpaper[i])):
if wallpaper[i][j] == '#':
# (앞에 있는 '#'은 주석을 달기 위해 사용한 '#'이니 헷갈리지 않길 바랍니다.)
# '#'이 있는 위치를 찾아서 [i,j] 형태로 위치 정보의 가로 세로를 저장해줍니다.
answer.append([i,j])
real_answer = [0,0,0,0]
# 정답으로 제출할 real_answer에는 모든 원소가 0으로 이루어진 리스트가 담겨있습니다.
answer.sort(key=lambda x : (x[0], x[1]))
real_answer[0] = answer[0][0]
real_answer[2] = answer[-1][0] +1
answer.sort(key=lambda x : (x[1], x[0]))
real_answer[1] = answer[0][1]
real_answer[-1] = answer[-1][-1]+1
return real_answer
정렬을 시켜서 하면 될 것 같다고 생각해서 우선 정렬을 시켜봤습니다.
좌표는 두 값을 갖고 있으니까 튜플 형태로 비교할 수 있으면 좋겠다고 생각했습니다.
문제는 제가 튜플을 정렬하는 법을 key 쓰면 될 것 같은데 직접 코드는 못 짠다는 겁니다.
그래서 구글링해서 찾은 key = lambda x: (x[0], x[1]))을 활용하기로 했습니다.
첫번째 인덱스의 첫번째 것이 기댓값의 0번 인덱스 같지 않나요?
맨 마지막 인덱스의 첫번째 인덱스에 1을 더한 것이 기댓값의 2번 인덱스 같지 않나요?
real_answer에 담아준 후에 다음 규칙을 찾아봅시다.
다음 규칙은 key=lambda x: (x[1], x[0]))에서 찾을 수 있을 것 같습니다.
아까랑 비슷하네요.
첫번째 인덱스의 두번째 것이 기댓값의 1번 인덱스 같지 않나요?
맨 마지막 인덱스의 마지막 인덱스에 1을 더한 것이 기댓값의 마지막 인덱스 같지 않나요?
real_answer에 다 담아주겠습니다.
오늘도 한 문제를 풀었습니다!
이번 문제처럼 설명이 긴 문제는 보통 문제를 이해만 하면 절반은 푼 것입니다.
이 문제에서 제가 더 공부해야할 부분은 key = lambda x: (x[0], x[1]))과 key = lambda x: (x[1], x[0]))입니다.
공부할 때 제일 중요한 것은 몰라도 스트레스 받지 않는 것입니다.
구글링만 할 줄 알면 정확히 몰라도 사용만 할 줄 알면 되는 게 아닐까요...?
아마도 key = lambda x: (x[0], x[1]))은 리스트 안에 있는 튜플 요소들 중에서 튜플의 첫번째 값을 기준으로 정렬을 시키는데, 튜플의 첫번째 값이 같다면 튜플의 두 번째 값을 기준으로 정렬 시키라는 말이었던 것 같습니다.
그리고 key = lambda x: (x[1], x[0]))은 리스트 안에 있는 튜플 요소들 중에서 튜플의 두 번째 값을 기준으로 정렬을 시키는데, 튜플의 두 번째 값이 같다면 튜플의 첫번째 값을 기준으로 정렬시키라는 말인 것 같습니다.
위에 올라가서 사진을 다시 보면 제가 생각한 대로 정렬이 된 것 같군요.
혼자서 주절거리려고 쓰고 있던 글인데 갑자기 문제 설명할 일이 생겨서 존댓말을 썼습니다.
이제 내 맘대로 쓰겠다
4문제 더 풀어야 업데이트를 해준다니...
귀찮으니까 다음에 풀도록 하겠다.
그나마 방금 푼 탐색 문제가 문제 해결 가능성이 높아서 먼저 추천해준 듯 하다. 가장 낮게 나오는 정렬 문제를 풀어서 얼른 점수를 높이면 좋겠다.
'코딩' 카테고리의 다른 글
[파이썬] 코딩테스트 연습 - 개인정보 수집 유효 기간 (0) | 2023.08.18 |
---|---|
[파이썬] 코딩테스트 연습 - 신고 결과 받기 (0) | 2023.08.18 |
프로그래머스 AI 리포트 분석을 분석해보자 (0) | 2023.06.27 |
[파이썬] 코딩테스트 연습 - 옹알이 (1), 옹알이 (2) 코드 해설 (1) | 2023.06.09 |
코딩테스트 연습 [카카오 인턴] 키패드 누르기 파이썬 (1) | 2023.04.08 |