본문 바로가기

list6

list for문 python으로 알고리즘 문제를 풀면서 헤맸던 부분이 있다. list-a로 구현해놓고 for-b처럼 구현되길 바랬던 것이다. 혹시나 해서 b처럼 바꿔보니 혹시나가 역시나가 되는 그런 상황이었다,, a는 아예 똑같은 반복인 것 같다.a를 더 편하게 생각해왔지만 둘은 확실하게 다르다. a=[[0]*5]*6 print(a) #[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] b=[[0]*5 for _ in range(6)] print(b) #[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0.. 2020. 8. 21.
list 덧셈 list끼리 합치고 싶을 때가 있다. 따로 list를 생성해서 for문으로 하나하나 append 시키는 것보다 '+' 하나로 아주 깔끔하게 합쳐진다. a=[1] b=[2,3] print(a+b) #[1,2,3] 2020. 8. 21.
같은 숫자는 싫어 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12906 예시로 arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return하는 문제를 풀어야 한다. 문제를 제대로 읽지 않는다면 set을 사용해서 풀 수도 있을 것이다. 하지만 여기 return 되는 배열을 보면 1이 두 번이나 있기 때문에 set을 사용하지 않아야 한다. 나는 여기서 새로운 list(->result)를 생성해주고 arr의 제일 첫번째 값을 미리 넣어뒀다. 이후 for문을 돌면서 현재 원소가 result의 마지막 원소와 같지 않을때만 삽입해주도록 해놓았다. def solution(arr): result=[] #새로운 배열 생성 result.appe.. 2020. 5. 5.
가운데 글자 가져오기 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12903 단어 s의 가운데 글자를 반환하는 함수를 작성하는 문제인데, 단어의 길이가 짝수라면 가운데 두글자를 반환해야한다. 그래서 단어의 길이에 따라 if-else문으로 나누어 return되는 범위를 지정해주었다. def solution(s): if len(s)%2: return s[len(s)//2] else: return s[(len(s)//2)-1:(len(s)//2)+1] 2020. 5. 5.
sorted()와 sort()의 차이 python에서 정렬 문제가 자주 나오고 다른 종류의 문제에서도 정렬이 자주 쓰인다. 여기서 sorted()와 sort()가 쓰이는데 이 두 방법의 차이점은 무엇일까? 먼저, 예시로 설명하자면 a=[3,6,1,4,7] b=sorted(a) print(b) #[1, 3, 4, 6, 7] a=[3,6,1,4,7] a.sort() print(a) #[1, 3, 4, 6, 7] 이렇게 된다. 결과는 당연히 같다. sorted()는 원래의 list는 원래대로 놔두고, 한번 더 list를 가져와 정렬한다. sort()는 원래의 list내에서 정렬이 되는 것이라고 생각하면 된다..! 따라서, sorted()는 메모리 사용량을 두배로 늘어난다고 보면 되고, 속도는 sort()가 빠르다. 때때로 원래의 list를 사용해.. 2020. 5. 3.
K번째수 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42748 처음엔 result에 append 하는 부분을 잘못 잡아 에러가 났지만 list범위를 다시 생각해보고 추가하니 성공할 수 있었다. for문을 여러번 돌려 시간 초과가 될 수 있으니 다른 방법을 찾아봐야겠다..! def solution(array, commands): answer = [] result=[] for i in commands: answer.append(array[i[0]-1:i[1]]) for i in answer: i.sort() for i in range(len(answer)): result.append(answer[i][commands[i][2]-1]) return resu.. 2020. 5. 3.