본문 바로가기

프로그래밍/이것이 코딩테스트다7

이것이 코딩테스트다 6일차 - 정렬 문제 성적이 낮은 순서로 학생 출력하기 굳이 dictionary로 안 받아도 되는데 일단 받아봄#name, score #성적 낮은 순(오름차순)으로 '학생 이름' 출력 n= int(input()) student = dict() for i in range(n) : key, value = input().split() student[key]=int(value) print(student) student_sorted = sorted(student.items(),key=lambda x : x[1]) //키값으로 정렬하는 방법. 정렬후에는 list내 튜플 형식으로 반환된다. for key,value in student_sorted : print(key) 처음부터 리스트로 받기 #name, score #성적 낮은 순(오름차.. 2023. 7. 7.
이것이 코딩테스트다 5일차 - 구현 문제 게임 개발 너무 복잡해서 일단 구현부터 했다 # N,M을 공백으로 구분하여 입력받기 n,m = map(int, input().split()) # 방문한 위치를 저장하기 위한 맵을 생성하여 0으로 초기화 d = [[0]*m for _ in range(n)] # 현재 캐릭터의 x좌표, y좌표, 방향을 입력받기 x,y,direction = map(int,input().split()) d[x][y]=1 #현재 좌표 방문 처리 #전체 맵 정보를 입력받기 array = [] for i in range(n) : array.append(list(map(int,input().split()))) # 북, 동, 남, 서 방향 정의 dx = [-1,0,1,0] dy = [0,1,0,-1] #왼쪽으로 회전 def turn_le.. 2023. 7. 6.
이것이 코딩테스트다 4일차 - BFS, DFS 1. 일단 자료구조 기초탐색 : 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정자료구조 : 데이터를 표현하고 관리하고 처리하기 위한 구조중요한 자료구조스택 - DFS / python : list - append와 pop모두 맨 뒤가 기준이라(맨 뒤에 삽입, 맨 뒤 부터 출력)큐 - BFS / python : deque (list로 큐를 구현하면 시간복잡도가 높음 - pop이 원소를 꺼낸 후에 이동 함)중요한 함수재귀함수 - 컴퓨터 메모리 - 스택 자료구조 - 종료조건 반드시 명시 2. 탐색 알고리즘DFS동작 기본 - 재귀, 스택, 그리디조건에 맞는 인접노드의 인접노드 계속 방문, 방문처리, 스택에 쌓음. 방문할 노드가 없으면 최상단 노드를 스택에서 제거, 그 다음 노드의 인접노드 방문, 방문처리, 스.. 2023. 6. 7.
이것이 코딩테스트다 3일차 - 구현 1. 구현이란?머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정Problem -> Thingking -> Solution 사실 문제 해결 분야에서 구현 유형의 문제는 ‘풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제‘를 의미한다. 피지컬이 좋다 : 프로그래밍 언어의 문법에 능숙하고 코드작성속도가 빠른 사람 따라서 구현은 피지컬을 요구하는 문제라고 할 수 있다. 구현하기 어려운 문제란?알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제특정 소수점 자리까지 출력해야 하는 문제문자열이 입력으로 주어졌을 때 한 문자 단위로 끊어서 리스트에 넣어야 하는 (파싱을 해야하는) 문제 등 파이썬으로 N개의 원소가 들어있는 리스트에서 R개의 원소를 뽑아 한 줄로 세우는 모든 경우를 구해야하는 문제는 어떻게 풀까.. 2023. 6. 7.
이것이 코딩테스트다 3일차 - 그리디 1. 그리디란?현재 상황에서 지금 당장 좋은 것만 고르는 방법 따라서 최적의 해가 나오지 않을 때가 많다 사전에 외우고 있지 않아도 풀 수 있을 가능성이 높은 문제 유형 (정렬, 최단경로 등은 이미 알고리즘 사용법을 정확히 알아야 한다.) 최단경로 문제는 플로이드워셜 or 다익스트라를 이미 알고 있어야 한다 (다익스트라 알고리즘은 그리디 알고리즘으로 분류되긴 한다) 다만, 그리디 알고리즘 자체가 문제 출제의 폭이 매우 넓어서 단순 암기만으로는 안 된다 많은 유형을 풀어봐야 한다! 훈련! 창의력, 문제를 풀기위한 최소한의 아이디어를 떠올리는 능력을 요구한다. 1.1 문제가 이렇게 나오면 그리디를 고려하자단순히 현재 상황에서 가장 좋아 보이는 것만을 선택해도 문제를 풀수 있을 때알게모르게 가장 큰 순서대로,.. 2023. 6. 2.
이것이 코딩테스트다 2일차 - 파이썬 문법 : 입출력, 라이브러리 입출력데이터를 입력받을 때는 문자열로 입력받는다.input()따라서 입력받은 데이터를 정수형 데이터로 처리하기 위해서는 정수로 바꾸는 int함수 사용int(input()) 여러 개의 데이터를 입력받을 때는 데이터가 공백으로 구분되는 경우가 많다 입력받은 문자열을 띄어쓰기로 구분하여 각각 정수 자료형의 데이터로 저장하는 코드의 사용빈도가 매우 높다list(map(int,input().split())) #입력받은 값을 공백기준으로 split하여 리스트 만듦 #map 함수로 리스트의 vlaue들을 int형으로 변환 #변환한 값들을 다시 list로 만듦 전형적인 소스코드n=int(input()) data=list(map(int,input().split())) # data.sort(reverse=True)등등 공.. 2023. 5. 31.