본문 바로가기

코딩

프로그래머스 AI 종합 분석 결과(feat. [파이썬] 바탕화면 정리 - 코딩테스트 연습)

반응형

 

어... 초심자 치고 나름 잘 풀고 있다고 생각했는데 종합점수 39.7점....?

고등학생 때 처음 수학 시험 보고 나서 놀랐던 기분을 다시 느끼게 될 줄이야....

 

프로그래머스 AI 종합 분석

 

자료구조, 탐색, 정렬이 부족하다고 큐, 트리, 이분탐색을 추천해줬다.

 

프로그래머스 AI 종합 분석

 

그렇구나! 50점이 넘는 것이 없구나!

 

프로그래머스 AI 추천 문제

 

알겠다. 풀어보겠다.

 

프로그래머스 코딩테스트 연습 바탕화면 정리

 

바탕화면 정리라는 문제를 추천해줬습니다.

 

최소한의 영역만 선택되는 좌표를 리턴해주라는 말 같네요. 파이썬으로 풀어보겠습니다

 

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]))은 리스트 안에 있는 튜플 요소들 중에서 튜플의 두 번째 값을 기준으로 정렬을 시키는데, 튜플의 두 번째 값이 같다면 튜플의 첫번째 값을 기준으로 정렬시키라는 말인 것 같습니다.

 

위에 올라가서 사진을 다시 보면 제가 생각한 대로 정렬이 된 것 같군요.

 

혼자서 주절거리려고 쓰고 있던 글인데 갑자기 문제 설명할 일이 생겨서 존댓말을 썼습니다.

이제 내 맘대로 쓰겠다

 

프로그래머스 Problem Solving 평가 리포트

 

4문제 더 풀어야 업데이트를 해준다니...

귀찮으니까 다음에 풀도록 하겠다.

그나마 방금 푼 탐색 문제가 문제 해결 가능성이 높아서 먼저 추천해준 듯 하다. 가장 낮게 나오는 정렬 문제를 풀어서 얼른 점수를 높이면 좋겠다.

반응형