보글보글 개발일지
반응형
[백준/1245][Python] 농장 관리
카테고리 없음 2023. 9. 7. 14:30

문제 https://www.acmicpc.net/problem/1245 1245번: 농장 관리 첫째 줄에 정수 N(1 < N ≤ 100), M(1 < M ≤ 70)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄마다 격자의 높이를 의미하는 M개의 정수가 입력된다. 격자의 높이는 500보다 작거나 같은 음이 아닌 정수 www.acmicpc.net 풀이 BFS로 풀었다. 우선 전체 배열을 탐색하며 방문한 적이 없다면 제일 높은 건지 확인하기 위해 해당 위치에서 BFS를 시작한다. check라는 변수를 통해 인접 지역 중 해당 위치가 가장 높을지 안높을지 체크한다. 높으면 0, 안높으면 1을 반환했다. 큐에 해당 위치를 넣어주고, 8개를 돌며 인접한 곳을 모두 탐색하는데 이때 다음 탐색할 곳의 높이가 현재 ..

이진탐색
알고리즘 2023. 9. 7. 00:45

이진 탐색: 반으로 쪼개면서 탐색하기 배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있는 알고리즘 이미 정렬되어 있다면 매우 빠르게 데이터 찾을 수 있음. 탐색 범위를 절반씩 좁혀가며 데이터를 탐색 변수 3개 사용: 탐색하고자 하는 범위의 시작점, 끝점, 중간점 찾으려는 데이터와 중간점 위치에 있는 데이터를 반복적으로 비교. 시간 복잡도 : O(logN) 반복문으로 구현 def binary_search(array, target, start,end): while startend되면 끝 mid = (start+end) // 2 #내림 if arr[mid] == target: return mid #찾았으면 중간지점 인덱스 반환 elif arr[mid] > target: #찾는게 중간지점 값보다 작으면 왼쪽..

article thumbnail
[쉬운코드] block I/O vs non-block I/O 개념
영상기록 2023. 9. 6. 17:55

영상 제목 block I/O vs non-block I/O 개념을 설명합니다! 소켓 I/O를 예제로 주로 설명해요! I/O multiplexing(다중 입출력) 설명도 빠질 수 없겠죠? ;) 영상 링크 https://www.youtube.com/watch?v=mb-QHxVfmcs 영상 요약 I/O에 관하여 I/O : 데이터의 입출력 I/O의 종류: network(socket), file, pipe, device Socket이란? 소켓: 네트워크 통신은 socket을 통해 데이터가 입출력된다. 백엔드 서버: 네트워크 상의 클라이언트들과 각각 소켓을 열고 통신 OS 레벨에서 Block I/O 동작 원리 Block I/O: I/O 작업을 요청한 프로세스/스레드는 요청이 완료될 때까지 블락됨 non-block ..

인증용 테스트글
코딩기록 2023. 9. 3. 00:14

코드트리 아이디: bbo1209

article thumbnail
[백준/18405][Python] 경쟁적 전염
알고리즘 2023. 8. 31. 00:24

문제 https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 풀이 1. 매 초마다 번호가 낮은 종류의 바이러스부터 먼저 증식한다.라는 조건을 잘봐야한다. 큐에 들어갈 때 바이러스 번호를 기준으로 정렬을 한 다음 넣어주면 매 초마다 큐에 바이러스 번호가 작은 순서대로 남게 된다. 그리고 매 초마다 큐에 들어오는 칸 수만큼 반복해서 상하좌우 검사를 해준다. 이 문제를 예시로 - 맨 처음에는 3개의 바이러스가 큐 안에 들어있다..

article thumbnail
KB IT's Your Life 3기 후기
프로그램 참가 2023. 6. 24. 12:38

이번 달 KB IT's Your Life를 수료하고, 최우수 프로젝트 팀으로 제주도까지 다녀와서 후기를 써보려고 한다. 좀 더 일찍 쓰려 했지만 이것저것 바빠서 이제서야 후기를 쓰기 시작한다. 모집 안내 우선 모집 안내는 아래와 같다. 선발 과정 서류 서류는 잘 기억이 안난다.. 그냥 성실하게 써서 낸 것 같은데.. 합격했다. SW 적성진단 여행 일정이랑 겹쳐서 되게 허둥지둥.. 종이도 없이 시험에 응시하게 되었다. 코테일 줄 알았으나 코테는 아니었다. GSAT를 짧게 공부한 경험이 있었지만 그래도 좀 빡셌다. 시험 내용은 인적성 시험의 총 집합이랄까.. 짧은 시간 내에 많은 문제를 풀어야했다. 점화식 머리 써서 계산하다가 머리 터질뻔한 기억이 난다. 모르더라도 최대한 빨리 많은 문제를 푸는 데 집중하면..

다이나믹 프로그래밍 개념 정리
알고리즘 2023. 6. 24. 11:54

조건 큰 문제를 작은 문제로 나눌 수 있다. 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다. 메모이제이션(Memoization) 다이나믹 프로그래밍을 구현하는 방법 중 한 종류 한 번 구한 결과를 메모리 공간에 메모해두고 같은 식을 다시 호출하면 메모한 결과를 그대로 가져옴 캐싱이라고도 함. 한 번 구한 정도를 리스트에 저장하는 방식으로 사용 → 사전 자료형 사용할 수 있음. 탑다운(하향식): 재귀 함수를 이용, 큰 문제 해결하기 위해 작은 문제 호출 피보나치 수열 #한번 계산된 결과 메모이제이션 하기 위한 리스트 초기화 d = [0] * 100 #피보나치 함수를 재귀함수로 구현(탑다운) def fibo(x): #종료 조건 if x==1 or x==2: return 1 #이미 계산한 ..

article thumbnail
[Java] Final 키워드
코딩기록/CS 2023. 5. 25. 12:39

Final의 정의 자료형에 값을 단 한번만 설정할수 있게 강제하는 키워드 즉, 값을 한번 설정하면 그 값을 다시 설정할 수 없다 public class Sample { public static void main(String[] args) { final int n = 123; // final 로 설정하면 값을 바꿀수 없다. n = 456; // 컴파일 에러 발생 } } 한 번만 할당 가능하다는 선언. 재할당하려고 하면, 컴파일 오류가 발생하여 바로 확인이 가능. final은 프로그램 수행 도중 그 값이 변경되면 안되는 상황에 사용한다. Final 변수 변수에 final을 붙이면 이 변수는 수정할 수 없다는 의미. 수정될 수 없기 때문에 초기화 필수. final 키워드가 붙은 변수는 초기화 후 변경 불가. ..

[프로그래머스/42889][Python] 실패율
알고리즘 2023. 5. 17. 14:13

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42889 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 처음에 스테이지에 도달한 플레이어 수와 스테이지에 도달했으나 아직 클리어하지 못한 플레이어수를 if문을 통해 각각 구해주니 시간 초과가 떴다. 따라서 if문을 줄이고자, 실패한 유저만 계산하고, 스테이지에 도달한 플레이어 수는 처음 스테이지 길이에서 실패한 유저수를 빼주는 식으로 코드를 바꾸었더니 정답! 정렬을 연습하고자, lambda를 사용하였다. lambda 사용법은, arr=sor..

MyBatis vs JPA
코딩기록/스프링 2023. 5. 4. 09:18

MyBatis: SQL Mapper 직접 SQL 작성 복잡한 JOIN 구현시 많이 사용 JPA: ORM(Object Relation Mapping) - 객체와 테이블 간 연결 JPA는 스펙(기능정의) → 구햔체가 필요. Hibernate JOIN의 성능이 영향을 많이 미침 간단한 기능 위주로 사용(CRUD)

반응형