본문 바로가기
알고리즘 풀이

[algorithm] 페어 - 백준:25314 코딩은 체육과목 | 프로그래머스: 문자열 내 마음대로 정렬하기

by 째깍단 2023. 5. 3.

답: 25314

더보기
import sys

N = int(sys.stdin.readline())
a = N / 4 
print('long ' * int(a) + 'int')

 

 

 

아래 코드는 vscode에서 실행할때는 정상 출력되지만 백준에 제출하면 런타임에러가 뜬다!

함수를 만들어 풀이하는 것이 익숙해서 그대로 만들었지만 시간복잡도 상으로 좋지 않은 코드인 것 같다.

def solution(N):
    a = N / 4 
    answer = int(a) * 'long ' + 'int'
    return answer

print(solution(N))

 

 

 

팀원들의 풀이

1)

N = int(input())
bite = ""
while True:
    if N >= 4:
        bite += "long "
        N -= 4
    if N == 0:
        break

 

 2)

import sys
input = sys.stdin.readline
number = int(int(input())/4)
print("long "*number+"int")

 

 

 

문제 분석 및 해석

 

만약, 입출력이 'N'바이트 크기의 정수라면 프로그램을 어떻게 구현할까?

 

입력 : 4                   20

출력 : long int       long long long long long int

 

 

 

1) 생각한 풀이

간단히 N을 나누어서 long에 곱하여 출력해주는 함수를 만들기

 

 

 

 

 

- 과정 - 

 

N = int(sys.stdin.readline())
a = N / 4 
print('long' * int(a) + 'int') # 출력 longint

 

띄어쓰기 없이 출력되어서 'long ' 에 띄어쓰기를 추가해주었다.

 

 

 

 


 

 

 

 

답: 프로그래머스: 문자열 내 마음대로 정렬하기

더보기
def solution(strings, n):
    strings.sort()
    answer = sorted(strings, key=lambda x:x[n])
    return answer

앞에서 한 번 정렬해주고 lambda를 사용해 문자열 내 특정 위치를 비교해 다시 정렬하기

 

 

 팀원의 풀이!

def solution(strings, n):
    answer = sorted(strings, key=lambda x:(x[n], x))
    return answer

 두 가지 다 비교하여 정렬해주는 방법..!!

 

 

역시 아직 람다에 대한 이해가 부족하다..ㅠㅠ

 

 

 

 

문제 분석 및 해석

 

문자열 내 마음대로 정렬하기

문자열로 구성된 strings

 

정수 n  = 각 문자열인덱스 n번째 글자를 기준으로 오름차순 정렬

 

strings                              n              return

["sun", "bed", "car"]       1         ["car", "bed", "sun"]

["abce", "abcd", "cdx"]  2        ["abcd", "abce", "cdx"]

 

 

 

1)생각한 풀이

 

sorted 함수를 사용하고

범위연산자에 n 넣어주면 어떨까?

 

 

 

 

 

 

 

과정1.

 

 

TypeError: list indices must be integers or slices, not str

리스트의 인덱스는 문자열이 아니라 정수여야한다.

 

def solution(strings, n):
    for s in strings:
        print(strings[s][n-1]) # 여기에서 s는 sun, [sun]을 넣은 것이어서 생긴오류

 

 

 

 

 

 

과정2.

 

for문으로 풀어볼 생각으로 진행중이었는데, 람다를 사용하면 간단히 풀이할 수 있다는 이야기를 듣고 재시도 하였다..

 

def solution(strings, n):
    answer = sorted(strings, key=lambda x:x[n])

 

 

미리 정리해주기

 

strings.sort()