[백준 1427][파이썬] 소트인사이드 (문자열을 리스트로, 리스트를 문자열로 변환) (리스트에서 특정 문자 제거)

2023. 1. 27. 12:00·백준 알고리즘/정렬
728x90

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

 

1427번: 소트인사이드

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

각 자리수를 내림차순으로 정렬하는 문제이다.

 

그렇기 때문에 정수형으로 입력을 받는게 아니라 문자열로 입력을 받아 정렬을 하는 편이 좋다.

 

먼저 input으로 문자열을 입력받는다.

 

n=input()

형 변환을 하지 않았기때문에 기본값인 문자열로 받게된다.

 

이제 이를 리스트로 변환을 한다.

li=list(n)

"Hello world !"라는 문자열을 입력하고 이를 print(li)를 통해 출력을 해보면

 

['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', ' ', '!']

 

위와 같은 리스트가 출력되는 모습을 확인할 수 있다.

 

이를 내림차순으로 변환을 하기 위해서 sort 함수로 오름차순으로 정렬을 한 뒤 reverse로 뒤집는 방식을 택했다.

 

li.sort()
li.reverse()

#한 줄로 표현하면 li.sort(reverse=True)

이제 이 리스의 요소들을 합쳐서 문자열로 만들 차례이다.

 

사용법은 

 

요소들 사이에 들어갈 문자.join( s for s in li)를 하면 된다.

 

빈 칸 없이 붙여야하므로 ''문자를 바탕으로 진행한다.

 

print(''.join(i for i in li))

 

<전체 코드>

n=input()
li=list(n)
li.sort()
li.reverse()
print(''.join(i for i in li))

 

이제 이 코드를 input 대신 sys 라이브러리의 sys.stdin.readline()을 사용하여 풀어보려 한다.

 

처음에는 input()을 바로 sys.stdin.readline()으로 바꾸어서 제출하였는데 실패를 했었다.

 

이유를 알아보니 input과 readline에는 입력을 받을 때 차이가 있었다.

 

바로 readline은 input과 다르게 마지막에 개행 문자인 '\n'이 붙는다는 점이다.

 

한 번 "Hello world !"를 readline으로 입력받아서 출력해보면

print(list(sys.stdin.readline()))

출력 결과

['h', 'e', 'l', 'l', ' ', 'w', 'r', 'o', 'd', ' ', '\n']

 

input과는 다르게 마지막에 개행 문자가 붙어있는 모습을 확인할 수 있다.

 

그래서 이 문자를 제거하기 위해 문자열의 strip이라는 메소드를 사용한다.

 

strip의 인자로 제거하고 싶은 문자를 넣어주면 자동으로 이 문자를 리스트에서 제거해준다.

 

즉 input과 동일하게 동작하도록 만들고 싶다면 개행 문자를 제거해줘야한다.

 

#input
s=input()

#input 위와 동일한 역할을 하는 readline
s=sys.stdin.readilne().strip('\n')

 

그런데 문자열이 아닌 int로 바로 형변환을 해버리면 굳이 개행 문자를 제거하지 않아도 알아서 정수로 바꿔주기 때문에 strip을 사용하지 않아도 된다. 

728x90

'백준 알고리즘 > 정렬' 카테고리의 다른 글

[백준 18870][파이썬] 좌표 압축 (파이썬 dictionary)  (0) 2023.01.31
[백준 11650, 11651, 10814][파이썬] 좌표 정렬하기 (sort 정렬 기준 정하는 방법, sys 라이브러리 사용법)  (0) 2023.01.20
'백준 알고리즘/정렬' 카테고리의 다른 글
  • [백준 18870][파이썬] 좌표 압축 (파이썬 dictionary)
  • [백준 11650, 11651, 10814][파이썬] 좌표 정렬하기 (sort 정렬 기준 정하는 방법, sys 라이브러리 사용법)
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    AWS Lambda
    RNN
    다익스트라
    influxDB CLI
    파이썬
    ChatPromptTemplate
    parametric search
    embedding
    ci/cd
    bfs
    binary search
    openvidu 배포
    스택
    nn.RNN
    codetree
    Merge
    푸쉬 알람
    Vector Store
    code tree
    스프링 OAuth2
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[백준 1427][파이썬] 소트인사이드 (문자열을 리스트로, 리스트를 문자열로 변환) (리스트에서 특정 문자 제거)
상단으로

티스토리툴바