목록취준기록/코딩테스트 (15)
베지밀
문제💡아이디어1. 거리 문제이므로 BFS를 떠올렸다. 2. 도시/간선 배열 graph와 거리 배열 distance를 선언했다.graph는 이중 배열로 미리 초기화해두어 for문으로 입력받을 수 있도록 했다.distance는 -1로 초기화하고 출발 노드는 0으로 지정했다. 3. 이동 가능한 모든 노드를 BFS로 확인하며 방문 여부를 체크한다.while queue로 큐가 빌 때까지 반복문을 돌며, 현재 노드를 큐에서 pop하고 인접 노드를 큐에 담아서 거리 정보를 더했다. 4. 거리 정보 체크처음엔 리스트 타입의 check를 떠올렸으나, 메모리의 문제로 불리언 타입의 check 변수로 변경했다. 정답# 백준 18352import sysfrom collections import deque# 도시 개수, 도로..
문제전형적인 시뮬레이션, 완전 탐색 문제 💡아이디어- 움직일 수 있는 경우의 수는 규칙에 따라 다음과 같다move = [(-1, -2), (-1, 2), (-2, -1), (-2, 1), (1, -2), (1, 2), (2, -1), (2, 1)] - 입력 1번 당 move를 한 번 씩 검사하면 되므로 시간 복잡도는 O(1) => 상수 시간 안에 계산이 가능함! - 열과 행을 분리해서 변수 취급함으로써 더 효율적인 접근 가능 👩💻코드location = input()# a1 = 열 행col = ord(location[0]) - ord('a') + 1row = int(location[1])cnt = 0move = [(-1, -2), (-1, 2), (-2, -1), (-2, 1), ..
11723 집합 문제 문제 풀이의 관건set를 사용해서 집합 연산을 수행all, empty와 같이 x값이 주어지지 않는 경우 구분임시로 입력값을 저장하고, 입력값의 개수를 구분하자 정답import sysM = int(sys.stdin.readline())S = set()for _ in range(M): tmp = sys.stdin.readline().split() if len(tmp) == 1: if tmp[0] == 'all': S = set(range(1, 21)) else: S = set() else: cmd = tmp[0] x = int(tmp[1]) if cmd == 'add': S.add(x) if cmd == 'remo..
1152 단어의 개수 정답S = input().split()print(len(S)) 실패한 시도S = input().strip()cnt = S.count(' ')print(cnt+1) 처음엔 공백의 개수를 세면 된다고 생각해서 count함수를 사용하여 코드를 작성했다.심지어 문자열 앞 뒤 공백을 제거하면서 완벽한 코드라고 생각했다..! 그러나 계속해서 틀리길래 gpt를 통해 질의한 결과..나의 코드는 빈 문자열도 1로 계산해버림따라서 strip과 count를 사용하는 것이 아닌, split으로 문자열을 쪼개서 리스트로 변환하도록 수정했다.
문제는 다음과 같다. 나는 다음 두 가지 방법으로 풀었다.1. sort()로 정렬해서 첫번째와 마지막 인덱스를 찾는 방법2. min(), max() 함수를 이용하는 방법 #10818#sort()N = int(input())num_list = list(map(int, input().split()))num_list.sort()print(num_list[0], end=' ')print(num_list[N-1])#10818#min(), max()N = int(input())num_list = list(map(int, input().split()))print(min(num_list), end=' ')print(max(num_list))참고로 print(min(num_list), max(num_list))가 더 ..
25314 코딩은 체육과목입니다 풀이N = int(input())for i in range(N//4): print("long ", end="")print("int") print의 end옵션을 사용해서 long 이후에 줄바꿈이 없도록 했다. 처음에 /로 구현했을 때 float 오류가 났다.나중에 알아보니 /와 //의 자료형 차이였다./는 float형 반환//는 int형 반환
IT계열 전공이지만 개발자가 아니라서 코딩을 제대로 해본 적 없는 취준생의.. 취준 성공을 위한 코테 공부 시작 - Python, C를 수강한 적은 있음- 알고리즘 공부해본 적 없음 & 교양 수준의 코딩 지식 이 영상 보고 시작함https://youtu.be/ukkLCl9yBvE?si=dYFjKdwThMHBb04u 1. 코드업 파이썬 기초 100제https://codeup.kr/problemsetsol.php?psid=33 문제집 / Python 기초 100제 codeup.kr 혹은 백준 단계별로 풀어보기 6단계까지https://www.acmicpc.net/step 2. 백준 알고리즘 문제 풀기가이드 : 그리디 알고리즘 - 탐색(완전탐색, BFS, DFS) 만 잘 갖춰도 코테에서 떨어질 일 ..
join 한눈에 정리한 사진 # 없어진 기록 찾기SELECT B.ANIMAL_ID, B.NAMEFROM ANIMAL_INS AS A RIGHT JOIN ANIMAL_OUTS AS BON A.ANIMAL_ID = B.ANIMAL_IDWHERE A.ANIMAL_ID IS NULL; 1. RIGHT JOINSELECT FROM TABLE A RIGHT JOIN TABLE BON A.KEY = B.KEYWHERE A.ANIMAL_ID IS NULL; # 있었는데요 없었습니다SELECT A.ANIMAL_ID, A.NAMEFROM ANIMAL_INS AS A INNER JOIN ANIMAL_OUTS AS BON A.ANIMAL_ID = B.ANIMAL_IDWHERE A.DATETIME > B.DATETIMEOR..
스택을 이용한 문제 '('면 push하고 ')'하면 pop하는 원리를 이용했다. 첫 시도에는 Stack이라는 클래스를 생성해서 만드려고 했는데,클래스 정의하는 걸 안해봐서 자꾸 다른 답이 나왔다 😂 결국 리스트로 스택 구현해서 class 없이 풀었다. 1. '('면 리스트에 append2. ')'면 리스트에서 마지막 값 pop3. pop할 땐 스택의 길이 검사 (len==0?)4. for문으로 문자열 다 돌고 나서 남은 스택 길이 검사 (len!=0) 풀이 코드def solution(s): stack = [] for i in s: if i == "(": stack.append(i) else: if len(stac..
# 흉부외과 또는 일반외과 의사 목록 출력하기SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD,"%Y-%m-%d") AS HIRE_YMDFROM DOCTORWHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'ORDER BY HIRE_YMD DESC, DR_NAME;1. DATE_FORMATDATE_FORMAT(date, format)date : 포맷할 날짜값format : 날짜를 어떻게 포맷할지 # 과일로 만든 아이스크림 고르기SELECT FLAVORFROM FIRST_HALFWHERE TOTAL_ORDER >= 3000 AND FLAVOR IN (SELECT FLAVOR FROM ICECREAM_INFO WHERE INGREDIENT_..
str = input()newstr = ""for i in str: if ord(i)>=65 and ord(i)=90 and ord(i)내 풀이지만 굉장히 복잡하고 원초적이다 GPT를 통해 알파벳 swap시켜주는 함수를 찾아보았다.str = input()print(str.swapcase()) 1. upper() : 모든 문자열 대문자 변환2. lower() : 모든 문자열 소문자 변환3. capitalize() : 첫글자만 대문자 나머지는 소문자4. title() : 각 단어 첫글자 대문자 변환5. swapcase() : 대문자는 소문자로, 소문자는 대문자로 변환
문제 조건 1. 최초의 날짜 -> MIN(DATETIME) 풀이 SELECT DATETIME FROM ANIMAL_INS WHERE DATETIME = (SELECT MIN(DATETIME) FROM ANIMAL_INS)
문제 조건 1. 가격이 제일 비싼 -> MAX(PRICE) 2. WHERE절을 활용해서 가격이 비싼 칼럼의 모든 정보를 가져와야 함 (단순히 PRICE 열만 업데이트되어선 안된다..) 풀이 SELECT * FROM FOOD_PRODUCT WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT) 처음에 아래처럼 썼다가 틀려서 당황했다. SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, MAX(PRICE) AS PRICE FROM FOOD_PRODUCT 사유 : 단순히 PRICE 칼럼만 MAX값으로 가져와졌기 때문..
문제 조건 2021년 출판 → PUBLISHED_DATE BETWEEN ‘2021-01-01’ AND ‘2021-12-31’ 인문 카테고리 → WHERE CATEGORY = ‘인문’ 출판일 기준 오름차순 정렬 → ORDER BY PUBLISHED_DATE 데이트 포맷 설정 → DATE_FORMAT(PUBLISHED_DATE, ‘%Y-%m-%d’) 풀이 SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE FROM BOOK WHERE PUBLISHED_DATE BETWEEN '2021-01-01' AND '2021-12-31' AND CATEGORY = '인문' ORDER BY PUBLISHED_DATE DATE_FORMAT은 ..
문제 조건 1. CAR_TYPE이 SUV인 자동차들 -> WHERE CAR_TYPE='SUV' 2. 평균 일일 대여 요금 소수점 첫째 자리에서 반올림 -> ROUND(AVG(CAR_TYPE), 0) 3. 컬럼명 지정 -> AS AVERAGE_FEE 풀이 SELECT ROUND(AVG(DAILY_FEE), 0) AS AVERAGE_FEE FROM CAR_RENTAL_COMPANY_CAR WHERE CAR_TYPE = 'SUV' GROUP BY CAR_TYPE 이지하게 풀어버렸다 기타 WHERE CAR_TYPE = 'SUV'와 HAVING CAR_TYPE = 'SUV'가 결과가 동일하게 나온다. 더 생각해볼 필요가 있는 듯 하다.