TIL

197일차(모험 106일차) - 알고리즘

haedal-uni 2022. 3. 30. 23:32
728x90

파이썬 알고리즘 연습할 때 기초 100제를 풀어보라고 해서 한 번 풀어보는데 

처음에는 출력과 관련된 문제가 많아서 쉬웠다.

 

자바랑 파이썬 연습 하기 위해서 파이썬 연습 하다가

같은 문제를 자바랑 파이썬으로 풀어볼 생각이다..!!

 

 

6007 : [기초-출력] 출력하기07(py)

# 출력하기
"C:\Download\'hello'.py" 

(단, 따옴표도 함께 출력한다.)
* \도 안전하게 출력하려면 \\를 사용하는 것이 좋다.


 

아래처럼 예시를 하나 만들고 풀었다.

print(" C:\\Download\\ ") #  C:\Download\
print(" \\ \" \ ' ") #  \ " \ '

 

print('"C:\\Download\\\'hello\'.py"')

 

더보기
'\n'      라인 피드(Line feed)
'\r'      캐리지 리턴(Carriage return)
'\t'      탭(Tab)
'\''      작은따옴표(Literal single quote)
'\"'      큰따옴표(Literal double quote)
'\\'      백슬래시(Literal backslash)

 

\' → '

\" → "

 

https://wikidocs.net/84384

 


6008 : [기초-출력] 출력하기08(py)

print("Hello\nWorld")

위 코드를 정확히 그대로 출력하시오.(공백문자 주의)

 

 

print('print("Hello\\nWorld")')

 


[1, 2, 3, 4], [10, 9, 8, 7] 을 입력 값으로 받았을 때 1, 2, 3, 4, 7, 8, 9, 10 으로 출력시키기

 

자바로 푸는 것보다 나는 파이썬이 편하기 때문에 파이썬 먼저 풀어봤다.

 

 

문제점 발견

1. 하나 통으로 출력되지 않게 하기

잘못된 출력 결과 ex)

for i in par :

    print(i) # 1, 2, 3, 4, 10, 9, 8, 7 ❌

 

2. 문자열 정렬하기

잘못된 출력 결과 ex)

10, 2, 3, 4, 7, 8, 9, 1 ❌

 

처음엔 replace와 int를 이용하려고 했는데 오류가 났다.

몇번의 삽질 끝에 순서대로 정렬까지 성공했다.

 

먼저 입력 값을 par이라는 변수로 받고 양 끝 대괄호를 슬라이싱으로 뽑고 

숫자 안에있는 대괄호는 replace로 없앴다.

par = par[1:-1].replace("]","").replace("[","")

 

 

그 다음 문제로 1번의 문제 때문에 따로 구분을 할 수 있을게 뭐 있을까 하다가

",'(쉼표)를 기준으로 뽑아내기로 헀다.

par = par.split(', ')

 

정렬을 당연히 sort로만 생각하다가 계속 None이 나와서 뭐가 문제인지 검색했다가

sorted로 실행하게 되었다. 

  • 원본 내용을 바꾸지 않고, 정렬한 값을 반환한다.
  • List, tuple, Dictionary, str에 모두 사용 가능하다.
  • key 를 통하여 정렬할 기준을 정할 수 있다.
  • reverse 가 True이면 내림차순, False이면 오름차순으로 정렬된다.

 

sort()와 sorted()의 가장 큰 차이점은

sorted()는 리스트와 문자열 둘 다 적용이 가능하지만 sort()는 리스트만 가능하다.

 

출처 : 파이썬 (Python) - (정렬 총정리) sort( ), sorted( ) , 특정 key를 기준으로 정렬하기 ,이중 리스트 정렬 , 다중 조건 정렬

출처 : [python] sort()와 sorted() 비교

 

 

 

 

내림차순이 reverse=True이기 때문에 reverse=False로 설정했다. 

print(sorted(par, reverse=False))

위 코드로 진행했더니 [' 10', ' 2', ' 3', ' 4', ' 7', ' 8', ' 9', '1'] 로 출력되었다. ❓❓❓

 

 

 

reverse=True로 바꾸면 아래와 같이 나온다.

print(sorted(par, reverse=True))

['1', ' 9', ' 8', ' 7', ' 4', ' 3', ' 2', ' 10']

 

 

 

또 이것저것 찾아보다가 sort(key=int) 코드를 보게 되었고 sorted에 넣게 되었다.

* key 를 통하여 정렬할 기준을 정할 수 있다.

print(sorted(par, key=int))

['1', ' 2', ' 3', ' 4', ' 7', ' 8', ' 9', ' 10']

 

이제 제대로 출력이 되었고 대괄호와 작은 따옴표만 없애면 원하는 결과가 나올 수 있다.

 

 

answer = ""
for i in par :
    answer = answer + i + ", "

print(answer[0:-2])

 

 

 

원래는 아래 코드로 진행하려 했으나 마지막 출력할 때 쉼표가 같이 나와서 진행하지 않았다. 

for i in par :
    print(i, end=", ")

 

728x90