-
BOJ14890-경사로-알고리즘 복습 3일차
https://www.acmicpc.net/problem/14890문제 설명board에 각 라인별로 경사로를 놓을수있는지 없는지 판별하는 문제다.경사로의 높이는 1이다. 아이디어각 라인별로 연속되는 숫자끼리 묶고 경사로의 크기대로 묶은 숫자들을 분할 시킨 후 규칙에 따라 덩어리를 제거하는 방식을 생각했다. 겪었던 문제1. 테스트케이스에 맞춰 틀리는 케이스만 고치는 식으로 수정하다보니 정답처리받는데 많은 시간이 걸렸다.2. 경사로의 길이가 1인 경우를 생각하지 못했다. 이미 경사로를 세운 땅의 연속된 길이를 1로 바꾸는 코드가 있었는데중복으로 경사로가 세우지는 문제가 생겼다.3. 조건문을 너무 복잡하게 만들었었다. 각 단계에서 한덩어리씩 지워나가면 됐는데 어떤경우는 두덩어리를 지우고 하니조건식이 너무 복잡..
-
BOJ 12100 - 2048 - 알고리즘 복습 2일차
https://www.acmicpc.net/problem/12100 문제 설명판을 상하좌우로 움직일때 숫자가 합쳐지는데 최대 5번 움직였을때 합쳐진 숫자의 최대값을 구하는 문제이다. 문제를 풀기전 했던 생각왼쪽으로 기울였을때 숫자를 합치기 위해 배열의 오른쪽부터 합쳐야하는지 왼쪽부터 합쳐야하는지 따져보았다.오른쪽부터 합치는경우 나중에 결과가 달라지니 왼쪽부터 합쳐야할거같은데 여러 경우를 생각했다.맨 왼쪽숫자를 두고 오른쪽으로 이동하며 같은 수를 찾는 방식을 가장 먼저생각했는데 그러면 나중에 수를 배치할때의 방법이안떠올라 옳은 접근방식이 아니란걸 알았다. 여러 방법들을 생각하다 큐에 넣고 연산을 한 후 배열에 다시 넣는 방법이 이상적임을깨달았다.최대값을 찾을때마다 전체 보드판을 봐야하는데 그것대로 복잡할거..
-
알고리즘 탐색알고리즘 감잡기
탐색문제를 풀면서 생각나는 부분들 계속해서 적을 예정 탐색알고리즘의 근본일단 대표적으로 브루트포스 , 백트래킹, bfs, dfs 가 있다. 탐색하는 경우의 수를 머리에 그리면서 단순화 시킬 필요가있다.1차원 배열로 결과들을 기록해나갈수있고(nQ, 배낭문제), 각 단계가 2차원 배열일수도 있다(2048, 구슬 탈출2).이중 구슬 탈출2의 경우는 각 단계가 2차원 배열로 그려지지만 실제로 중요한것은 공의 위치이므로 공의 위치만을 저장하여 풀수도있다. bfs는 최단경로, 최소 횟수에 유용하고백트래킹은 특정 조합을 찾는 경우, 특정 조합의 개수를 찾는경우에 유용하다.dfs는 거의 쓸일이 없고 있어도 bfs로 풀수있다. 백트래킹 [Python] 백트래킹 (+ DFS와 차이)백트래킹이란?백트래킹이란 현재 상태에서..
-
BOJ-13460 구슬탈출2 - 알고리즘 복습 1일차
https://www.acmicpc.net/problem/13460 문제 목표판을 기울여가면서 빨간공만 빠뜨리기 위한 최소 시행 구하기 문제풀이 아이디어1. 판에 크기에 해당하는 리스트를 만들기2. 각각 상하좌우로 공을 옮기는 메소드를 만듬3. 완전탐색으로 모든 경우를 시행해봄 처음 코드 (실패)r,c = map(int, input().split(" "))redLoc = [-1,-1]blueLoc = [-1,-1]board = [list(input()) for _ in range(r)]def swap(loc1, loc2, M): ### loc1 과 loc2는 튜플 temp = M[loc2[0]][loc2[1]] M[loc2[0]][loc2[1]] = M[loc1[0]][loc1[1]..
-
topcit 기술영역 소프트웨어 공학 개요
목표1. 소프트웨어의 특성과 문제점을 설명할 수 있다.2. 소프트웨어공학의 배경과 목적을 설명할 수 있다.3. 소프트웨어 개발 프로세스 모델에 대해 설명할 수 있다. 핵심키워드- 소프트웨어의 특성- 소프트웨어 생명주기- 요구사항 분석, 설계, 구현, 테스팅- 소프트웨어 요구관리, 유지관리, 형상관리, 품질관리 공부시작 전 궁금증1. 소프트웨어의 품질이 어떻게 평가되고 관리될까?2. 프로세스 모델이 어떻게 변화하여 왔을까?3. 소프트웨어 공학이라는 학문은 어떠한 필요로 생겨났을까?4. 소프트웨어 공학에서 다루는 개념은 무엇일까? 내용정리 소프트웨어 공학의 정의 : "소프트웨어의 개발, 운용, 유지보수 등의 생명주기 전반을 체계적이고 정량적으로 다루는 학문" 소프트웨어 공학의 4가지 중요요소- 방법 : ..
-
파이썬 복습 2
1. 이터러블? 이터레이터? 제네레이터?가장 먼저 이터러블에 대해 이해해보자. 이터러블은 내부 요소를 하나씩 리턴할 수 있는 객체를 말한다.우리가 흔히 for을 사용하는 자료형들, 리스트 , 딕셔너리, 셋을 떠올릴 수 있다.시퀀스 타입이든 ,컬렉션 타입이든 내부 요소를 하나씩 리턴할 수 있다면 이를 이터러블이라고 말할 수 있다. 이터레이터는 클래스에서 선언된 __next__() 함수나 내장함수 next()를 통해 원소를 순차적으로 반환할 수 있는 객체들을 말한다.이터러블은 __iter()__를 통해 이터레이터를 반환할 수 있고 그후 반환받은 이터레이터의 next를 통해 순차적으로 내부요소를 반환할 수 있다.list = [1,2,3,4]type(list) # listiter = iter(list)typ..
-
파이썬 복습
1. 문자열 데이터 타입 파이썬은 알고리즘에서 문자열 처리에 굉장한 편의성을 가지고 있다.이를 위해 인덱싱과 슬라이싱, 문자의 합 연산, 반복 연산에 익숙해지는 것이 필요하다.그리고 문자열, 튜플, 리스트 자료형에서 가변(mutable)과 불변(immutable) 이라는 개념이 있다. 이를 이해하기 위해 메모리 주소를 생각해봐야한다.a = 1addr1 = id(a) a += 1addr2 = id(a)print(addr1)print(addr2)두 메모리 주소가 다른것을 확인할 수 있다. 정수형은 immutable로 메모리에 할당된 데이터를 변경할 수 없다.초기 1 이 임의의 공간에 배정되고 2가 쓰일 때 1이 배정된 공간에 2를 넣는 것이 아니라 새로운 공간에 2를 넣고 변수 a 가 가리키는 주소를..
-
spring-boot-devtools 설정하기
왜 사용할까?개발과정에서 서버를 재시작없이 소스코드의 변경사항을 확인할 수 있다. devtool 사용 org.springframework.boot spring-boot-devtools runtime true 프로퍼티 설정spring.devtools.livereload.enabled=truespring.devtools.restart.enabled=truesetting > 빌드 실행 배포 > 컴파일러 > 프로젝트 자동 빌드 setting > 고급설정 > 컴파일러 > 개발된 애플리케이션 ...
-
spring jpa
오늘 공부한 내용 정리@Column -> 엔티티 필드명은 name인데 참조하는 테이블의 필드명은 user_name 일때 매핑할 수 있음. 제약조건을 걸 수 있음@JoinColumn -> 연관관계 매핑시에 사용됨.(해당 필드가 외래키가 됨)@OneToMany(mappedBy = "") -> 양방향 관계일때 누가 외래키를 가져야하는지 정해야함. mappedBy를 통해 자신이 연관관계의 주인이 아닌 것을 표시. mappedBy에는 어떤 필드가 외래키를 가졌는지 명시해줘야함. @Embedded , @Embedding -> VO를 만들고 entity 필드로 선언할때 이게 값타입임을 명시하기 위해 사용. VO에 선언된 필드들이 테이블에 그대로 적힘. @Enumerated(value = EnumType.STRING)..
-
스프링 웹소켓 및 STOMP
[Spring Boot] STOMP를 이용한 실시간 채팅 및 채팅방 동적 생성프로젝트 속 구현한 실시간 채팅은 다음과 같이 동작한다.STOMP(Simple Text Oriented Message Protocol)는 기존 WebSocket 통신 방식을 좀 더 효율적으로, 조금 더 쉽게 다룰 수 있게 해주는 프로토콜이다.이 프velog.io 기존 http 통신은 서버가 클라이언트의 상태를 기억하지 않고 단방향으로 진행된다.또한 연결이 오면 연결을 맺고 응답을 받으면 연결을 끊어버린다. (요청단위로 통신) 웹소켓은 계속 연결을 유지하고 요청을 끝내는 동작이 따로 필요하다. 정보처리http 와 웹소켓 통신은 주고받는 데이터 포멧이 다르다.하지만 웹소켓 통신에서 핸드쉐이킹이 http 프로토콜 일어나긴 하지만 ..
-
xcode 시뮬레이터 더미데이터 삭제하기
문제 발생 : xcode 업데이트 후 시뮬레이터를 새로 까는데 도중에 실패함.메모리를 확인하는데 분명 도중에 실패했는데도 system data 에 해당하는 데이터 크기는 늘어나는 것을 확인했다. 문제 해결 :처음에 xcode > setting > location 에 적힌 경로에 들어가서 ls -alsh 로 파일 크기를 탐색했는데 크기가 큰 찾아지는 파일이 없었다.구글링해서 시뮬레이터 저장 패스라고 적혀있는곳을 다봤는데 따로 관찰되는 파일이 없었다. 방법터미널에서 sudo find / -type f -size +6G 명령어 를 이용해 6기가 이상의 파일을 찾았다./Library/Developer/CoreSimulator/Cryptex/Images/Inbox에 모든 데이터가 있었다. 해당 경로에있는 모든 ..
-
스프링 시큐리티 필터
시큐리티 필터 이론 [Spring Security] Spring Security Filter Chain 에 대해안녕하세요 오늘은 Spring Security 에서 인증,인가 과정을 담당하는 Security Filter Chain 에 대해 알아보겠습니다.Security Filter Chain 이란 Spring Security 에서 제공하는 인증,인가를 위한 필터들의 모음입니velog.io 우리는 이전에 필터에 대해서 공부했다.FilterRegistrationBean 을 사용하여 필터를 등록했었다.이렇게 등록된 필터들은 여러 필터들이 모여 체인을 형성한다.서블릿 컨테이너가 요청 URI 경로를 보고 필터를 거친다. 이러한 서블릿 필터중 delegatingFiilterProxy가 있고 해당 필터 내부에는 ..