coding test

· coding test
1. Linked List? 노드라는 구조체가 연결되는 방식으로 데이터를 저장하는 자료구조 1-1. 구성? value : 데이터 값 NEXT : 다음 데이터의 주소 값 Node : 두개를 합친 데이터 자체 메모리 상에서는 비연속적으로 저장되어 있지만 각각의 node가 다음 node의 주소값을 가지고 있기 때문에 논리적으로는 연속적으로 저장되어있음 이것을 물리적 비연속적, 논리적 연속적 이라고 한다 Array List에서는 연속적으로 값을 저장하기 위해 순차적으로 데이터를 저장하였지만 Linked List는 연속성을 유지하지 않아도 되기 때문에 메모리 사용이 조금 더 자유롭다 1-2. 노드의 구현 class Node : def __init__(self, value = 0, next = None): self..
· coding test
0. 배경 지식 정렬 임의의 배열 [3, 1, 5, 6] 을 정렬하는 시간 복잡도는 O(nlogn) 이다 버블 정렬 등등 여러가지 정렬 방식이 있지만 파이썬에서는 이미 잘 만들어져 있다. Two Pointer 위와 같은 배열이 있을때 3과 6이라는 두개의 포인터를 지정해서 왔다갔다 하며 문제를 해결하는 방법이다. 주의할 점은 정렬이 된 후에 사용한다 1. 문제 이해하기 2023.12.06 - [coding test] - Two Sum Two Sum 1. 문제 이해하기 1-1. 문제 해석 예를 들어서 4, 1, 9, 7, 5, 3, 16에서 두개의 숫자를 더해 14(target)이 되는 숫자가 있다면 true, 아니면 false 반환할 것 하지만 두번째 예시 2, 1, 5, 7 에서 4(target)을 만..
· coding test
1. 문제 이해하기 1-1. 문제 해석 예를 들어서 4, 1, 9, 7, 5, 3, 16에서 두개의 숫자를 더해 14(target)이 되는 숫자가 있다면 true, 아니면 false 반환할 것 하지만 두번째 예시 2, 1, 5, 7 에서 4(target)을 만들 수 있는 2 + 2가 있지만 같은 원소를 두 번 사용 할 수 없기 때문에 False를 반환해야한다. 1-2. 제약 조건 2
· coding test
1. 문제 2. 접근 1. M이 45보다 크다면(예를 들면 50분) -45를 해주면 된다. 2. M이 45보다 작다면(입력1 10분) 음수가 되어서 정상적인 시간이 안된다(조건식 필요함) 2-1. 분단위가 45보다 작을 때 H에는 1을 빼준다 2-2. M에는 60을 더해준다. 60을 더해주는 이유는 분침을 한바퀴 더 돌려서 60보다 크거나 같게 만들어 음수가 안나오게끔 하는 방식이다. 그 상태에서 분을 빼주면 정확한 시간이 나온다. 3. 만약 H가 0이라면 1을 뺏을 때 -1이 나오기 때문에 시간이 이상해진다. 3-1. H는 23을 할당해준다. 45분을 더 적게 맞춘다는 것은 한시간이 넘지 않기 때문에 -2를 할일이 없다. 0시에서 한시간 전은 23시 이기 때문에 23을 할당한다 3-2. M에는 똑같이 ..
· coding test
1. 문제 2. 접근 1. 14 : 30 이고 20분 뒤에 완성 된다면, 그냥 timer을 분에 더해주면 된다. 2. 17:40에 80분후 처럼 timer에 분을 더했을 때 60이 넘어간다면 H에 +1 해줘야 한다. 3. 만약 H가 24가 넘어간다면 0부터 다시 시작이기 때문에 시간에 24를 빼줘야한다. => 종이에 계산하다가 안 사실 : 타이머를 60으로 나누면 몫을 H에 더하고 나머지를 M에 더하면 예제 출력과 같아진다 3. 풀이 H, M = map(int, input().split()) timer = int(input()) H += timer // 60 M += timer % 60 if M >= 60: H += 1 M -= 60 if H >= 24: H -= 24 print(H,M)
· coding test
1. 정렬의 시간복잡도 정렬이 되지 않은 리스트를 정렬할때 시간복잡도는 O(nlogn)이다!(그냥 외울것) 2. Two Pointer arr = [1,3,5,7,2] 예를들어 위 같은 리스트가 있을 때 두개의 포인터를 가지고 문제를 해결하는 방법이다. 예를들면 1과 2를 가지고 좌우로 왔다갔다 하면서 해결하는 방법이 있겠다. 하지만 Two Pointer는 정렬이 된 상태에서 이용한다. 3. 활용하기 비교를 위하여 전에 풀었던 문제를 가져오겠다. 2023.06.22 - [coding test] - 알고리즘 이 글의 마지막에 있는 문제이다. 코드를 다시 가져오자면 def towSum(nums, target): n = len(nums) print(n) for i in range(n): for j in rang..
· coding test
1. 알고리즘이란? 알고리즘이란 문제 해결 방법이다 문제상황 3, 5, 1, 2, 4 라는 다섯개의 숫자를 오름차순 정렬하려고 한다. 해결방법 1. 가장 작은 숫자를 맨앞에 둔다. 2. 나머지 숫자에서 작은 숫자를 두번째에 둔다 ... 반복한다. 이때 해결방법이 알고리즘에 해당한다. 2. 실행시간(러닝타임) 우리가 작성한 코드를 컴퓨터로 실행시켰을 때의 시간 2-1. 예시 sum = 0 // 3ns for i in range(1,100): // 3ns sum += i// 2ns print(sum) 이런 코드가 있다고 가정했을 때 주석처럼 한줄당 시간이 걸리고 반복문이었을 때, 반복문의 수만큼 곱하는 시간이 걸린다 즉, sum = 0 // 3ns for i in range(1,100): // 3ns X 1..
· coding test
1. 자료구조란 ? 데이터를 저장하고 관리하는 방식 데이터를 체계적으로 저장하여 메모리 효율적 사용 빠르고 안정적으로 데이터 처리 1-1. 자료구조를 알아야하는 이유 효율적인 코드를 짜지 못했음 -> 램메모리가 가득참 -> 성능 저하 1-1-1. 예시 LIST : 데이터를 순차적으로 나열해 놓은 집합. 문자형 데이터 : "L" "I" "S" "T" 1. array 데이터로 저장함 : 단어를 연속적으로 저장한다. 장점 : 데이터 접근 쉬움 2. Linked List로 저장함 : 메모리 상에는 불연속적으로 저장 되지만 다음 데이터의 위치를 가리키면서 연속적으로 유지 가능 장점 : 데이터 추가, 삭제가 쉬움 => 메모리 구조를 알고 있으면 자료구조를 쉽게 이해한다 2. 메모리 램메모리 : 트랜지스터라는 작은 ..
ron_nie
'coding test' 카테고리의 글 목록 (4 Page)