[백준] 1181번: 단어 정렬

2024. 6. 26. 10:31·코딩테스트/BOJ

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

난이도: 실버5

▶ 문제 탐색하기

N : 단어의 개수 (1 ≤ N ≤ 20,000)

word : 단어들 (알파벳 소문자, len(word) ≤ 50)

 

 ◇ 원하는 출력 조건

  1.  len(word) 증가하는 순(=오름차순)으로 출력
  2.  len(word)가 같다면 알파벳 사전 순으로 출력

▶ 코드 설계하기

 len(word)들의 오름차순 정렬들이 진행됨과 동시에 동일한 len에 대해서는 str의 사전 순으로 정렬되어야한다. 

dictionary = dict(zip(arr, length))
# {'but': 3, 'cannot': 6, 'hesitate': 8, 'i': 1, 'im': 2, 'it': 2, 'more': 4, 'no': 2, 'wait': 4, 'wont': 4, 'yours': 5}

위와 같이 중복을 없애주고 사전식으로 정렬한다.

sorted_keys = sorted(data.items(), key=lambda item: item[1])

items() 함수를 사용해 키-값 쌍을 가져오고, lambda 함수로 값을 기준으로 정렬한다. 

▶ 회차별 수정사항

  • arr = [but, i, wont, hesitate, no, more, no, more, it, cannot]에서 'no'나 'more'과 같이 중복되는 단어를 제외하고 정렬하고 싶다면 배열을 집합으로 변환하여 중복을 제거해야한 후, 다시 집합을 배열로 변환하여 정렬한다. 
    ex) arr = sorted(set(arr))
  • for문으로 len을 우선 정렬한 후, if 문을 써서 동일 len에 대해 사전 정렬하려 했으나 머리가 아파서 포기.
  • 단어들의 배열인 arr과 단어 길이에 대한 배열인 length를 일대일 대응되도록 {key: value}로 만들었다.
    ex) 두 길이가 같은 배열을 딕셔너리로 결하는 법: dict( zip( arr1, arr2 ))

▶ 정답 코드

N = int(input()) # 1~20000
arr = []         # 0 1 2 3 4 5 6..key로 두고
length = []      # 3 1 4 7  value로 두자
for i in range(N):
  word = str(input())     # but, i, wont, hesitate
  arr.append(word)        # arr = [but, i, wont, hesitate, no, more, no, more, it, cannot]
  arr = sorted(set(arr))  # ['but', 'cannot', 'hesitate', 'i', 'im', 'ir', 'more', 'more', 'no', 'no', 'wait', 'wont', 'yours']

length =[]
for j in arr:
  length.append(len(j))
dictionary = dict(zip(arr, length)) 

sorted_keys = sorted(dictionary.items(), key=lambda item: item[1])

for key in sorted_keys:
  print(key[0])

▶ 추가 풀이

https://sponge-nitrogen-136.notion.site/fe88578fb8224d1798ac70bf4a4d0404

 

생일 | Notion

📌 문제 탐색하기

sponge-nitrogen-136.notion.site

https://velog.io/@klaus/%ED%8C%8C%EC%9D%B4%EC%8D%ACPython-%EB%B0%B1%EC%A4%80-5635%EB%B2%88-%EC%83%9D%EC%9D%BC

 

'코딩테스트 > BOJ' 카테고리의 다른 글

[백준] 2578번: 빙고  (0) 2024.07.01
[백준] 25305번: 커트라인  (0) 2024.06.28
[백준] 5635번: 생일  (0) 2024.06.27
[백준] 10814번: 나이순 정렬  (0) 2024.06.25
[백준] 2309번: 일곱 난쟁이  (0) 2024.06.24
'코딩테스트/BOJ' 카테고리의 다른 글
  • [백준] 25305번: 커트라인
  • [백준] 5635번: 생일
  • [백준] 10814번: 나이순 정렬
  • [백준] 2309번: 일곱 난쟁이
뚱이, not a starfish
뚱이, not a starfish
M.S. Student,. Mainly interested in computer vision and autonomous cars
  • 뚱이, not a starfish
    Wilbur-Babo
    뚱이, not a starfish
  • 전체
    오늘
    어제
    • 분류 전체보기 (194)
      • 통신 및 네트워크 (12)
      • Embedded Projects (2)
      • 3D Reconstruction (1)
        • Gaussian Splatting (0)
        • 3D-GS (1)
        • Multi-view Geometry (0)
        • VSLAM (0)
        • Computer Graphics (0)
      • LLM(VLM) (0)
      • AI-Study (28)
        • Mono-Depth (7)
        • Base (2)
        • Computer Vision (1)
        • Image Processing (3)
        • Tiny Object Detection (3)
      • 자율주행 (20)
        • [2023] 1-fifth AA EV (4)
        • [2022] 1-tenth AA EV (2)
        • ROS 1,2 (4)
        • 이론 (7)
        • 실습 (3)
      • Pointcloud (0)
      • sw (16)
        • 정보보안 (1)
        • Android_develop (3)
      • [학부] 전기전자공학 (12)
        • 반도체 (2)
        • 마이크로프로세서 (6)
      • 코딩테스트 (22)
        • BOJ (21)
      • 취준 (21)
        • EVS37 Ambassador (5)
        • 차량 제어 플랫폼 (5)
        • 영어 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    evs37sdv
    tar 파일
    현대자동차 자율주행 서류 합격 후기
    현차 3월 신입 서류
    현대차3월신입후기
    헤네스
    현차 3월 자율주행
    자율주행경진대회
    현대자동차 서류합격후기
    tar압축풀기
    자율주행자동차
    오픽후기
    현차떨
    우분투터미널
    현대자동차최종불합
    현대자동차최종면접결과
    자율주행
    현대자동차 연구개발
    헤네스유아용자동차
    evs37 sdv
    심포지움
    정렬
    자율주행작품
    rc카
    현대자동차 자율주행
    오블완챌린지
    현차 자율주행
    software defined vehicle
    EVS37
    자율주행시험
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
뚱이, not a starfish
[백준] 1181번: 단어 정렬
상단으로

티스토리툴바