본문 바로가기

코딩테스트

(6)
[백준] A+B, 입출력 문제(JavaScript) A+B, 입출력 문제(JavaScript) 문제 풀이 //fs 모듈을 이용해 파일 전체를 한 줄씩 읽어와 문자열로 저장 let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split('\n'); //["1", "2"] let line = input[0].split(' '); let a = parseInt(line[0]); //1 let b = parseInt(line[1]); //2 console.log(a+b); ✅ 일반적으로 코딩테스트에서는 표준 출력으로 console.log() 사용 //템플릿 리터럴, 백틱 문자 사용 result = 10; console.log(`정답은 ${result}입니다.`); ✅ 입력 데이..
[프로그래머스] 행렬의 곱셈(python) 행렬의 곱셈(python) 문제 풀이 행렬 곱에 대해 알아야 하는 문제였습니다. 위의 풀이는 제출 시 런타임에러가 났는데, 불필요하게 append()함으로써 난 것으로 파악했습니다. 아래 풀이처럼 미리 행렬 arr1과 arr2의 행과 열의 수를 변수로 선언해 두고. 결과를 저장할 answer 리스트를 초기화함으로써 해결할 수 있습니다. # 깔끔한 풀이 def solution(arr1, arr2): # arr1과 arr2의 행과 열의 길이를 변수로 선언 r1, c1 = len(arr1), len(arr1[0]) r2, c2 = len(arr2), len(arr2[0]) # 결과를 저장할 2차원 리스트 초기화 answer = [[0] * c2 for _ in range(r1)] # arr1의 각 행과 arr..
[프로그래머스] 두 개 뽑아서 더하기, 모의고사(python) 두 개 뽑아서 더하기, 모의고사(python) 문제 1. 두 개 뽑아서 더하기 풀이 def solution(numbers): answer = [] for i in range(len(numbers)): for j in range(i+1, len(numbers)): answer.append(numbers[i] + numbers[j]) return sorted(set(answer)) #중복 제거. 오름차순 정렬. N은 배열 numbers의 길이. 시간복잡도는 모든 조합을 확인하기 위한 중첩 반복문에서 O(N^2), 이를 정렬하는 데에 O(N^2 log(N^2)) 최종 O(N^2 log(N^2)) 문제 2. 모의고사 풀이 def solution(answers): answer = [] # 시험이 최대 10000문..
[코딩테스트] 리스트/덱(deque) 리스트/덱(deque) 이번 시간에는 리스트와 덱(deque, 데크)에 대해 정리해 보겠습니다. 저자님의 스터디 가이드를 참고했습니다. 배열에 대해서는 정리를 한번 했었는데요. 이번에는 리스트의 메서드와 시간복잡도에 대해 알아보겠습니다.배열 메서드append(item) - 리스트의 끝에 item을 추가 / 반환 값 없음.- 기존 원소에 영향을 주지 않기 때문에 시간복잡도 O(1) pop()- 리스트 맨 끝의 item을 삭제 / 반환 값은 삭제한 원소- 기존 원소에 영향을 주지 않기 때문에 시간복잡도 O(1) pop(0)- 리스트 맨 앞의 item을 삭제 / 반환 값은 삭제한 원소- 맨 앞의 원소를 삭제하면 모든 원소가 한 칸씩 앞으로 이동해야 하므로, 시간 복잡도 O(N), N은 리스트의 길이- 비효율적..
[코딩테스트] 코드를 평가하는 방식, 시간 복잡도 코드를 평가하는 방식, 시간 복잡도 이번 시간에는 '배열 연산의 시간 복잡도와 자주 사용하는 기능'에 대해 알아보기 전에 시간 복잡도(Time Complexity)의 개념에 대해 먼저 알아보려고 합니다. 저자님의 스터디 가이드를 참고했습니다. 코딩 테스트 평가 방식코딩 테스트에서 코드를 평가하는 방식은 크게 두 가지입니다.1. 내가 작성한 코드의 결괏값이 테스트 케이스의 결괏값과 일치하는지 (정확성)2. 문제에서 요구하는 알고리즘 "성능"을 만족하는지 (효율성) 코딩 테스트의 문제들은 각각 '가장 효율적으로 해결하는 알고리즘'이 있다고 하는데요.이때 이 알고리즘의 성능을 측정하는 데 쓰이는 것이 시간복잡도입니다. 시간복잡도는 입력값과 연산 횟수의 상관관계에 따라 성능을 측정하는 것입니다. 예를 들어 1차..
[코딩테스트] 배열 배열 '코딩 테스트 합격자 되기'의 첫 번째 챕터인 배열입니다. 배열 개념에 대해 간단히 정리해보겠습니다. 배열은 인덱스와 값이 일대일로 대응하는 자료구조입니다. 배열은 특정 위치(인덱스)에 있는 데이터에 바로 접근할 수 있습니다. 이를 임의 접근(random access)이라고 합니다. 인덱스는 0부터 시작합니다. #배열 생성 arr = [0, 0, 0, 0] arr = [0] * 4 arr = list(range(4)) # [0, 1, 2, 3] 리스트는 여러 가지 방법으로 생성할 수 있습니다. 대괄호를 사용하여 빈 리스트를 표시하기: [] 대괄호를 사용하여 쉼표로 항목 구분하기: [a], [a, b, c] 리스트 컴프리헨션 사용하기: [x for x in iterable] 형 생성자를 사용하기: l..