전체 글 38

[MySQL] ERROR 1833

문제 발생 토이 프로젝트를 진행 하던 중에 DB 어느 테이블의 Primary Key에 auto_increment를 설정하지 않아서 변경하는 과정에서 발생한 오류이다. 원인 에러를 읽어보니 다른 테이블과의 관계를 통해 설정된 foreign key 때문에 해당 컬럼을 변경할 수 없다는 것이다. 해결방안 설정된 foreign key를 잠시 제거하고, 컬럼의 속성을 변경해 주고, 다시 foreign key를 설정해주면 된다. 이때, 다른 세션에서 데이터에 접근할 수 없게 연관된 table들을 LOCK 해준 상태에서 진행해야 한다. 해결과정 먼저, 해결과정에서 찾은 stackoverflow 사이트이다. stackoverflow.com/questions/13606469/cannot-change-column-used..

DB/MySQL 2021.04.09

[백준 2665번] 전깃줄 (Python)

문제 설명 두 개의 전봇대가 존재한다. 그 사이를 여러개의 전깃줄로 연결해 놓았다. 연결된 전깃줄이 서로 교차하지 않도록 하기위해서 몇 개의 전깃줄을 제거하려고한다. 이에 남아있는 모든 전깃줄이 교차하지 않기위해 제거해야하는 전깃줄의 최소 개수를 구해야 한다. 문제 해결 (Pseudo code 작성) 1 2 3 4 5 6 7 8 9 10 Input num_of_wire Input connected_wires : [connected_A_pole, connectec_B_pole] Sort connected_wires by connected_A_pole Set connected_B_poles to sorted_connected_wires[connected_B_pole] Set max_remaining_wire..

전공공부/백준 2021.01.27

[백준 17609번] 회문

예제 입력은 다 통과했으나 틀렸다고 하여서 반례를 찾게된게 baaba 였다 출력으로 1이 나와야 하는데 나의 코드에서는 2가 나왔다. 처음의 알고리즘 설계를 왼쪽 오른쪽에서 하나씩 문자를 읽으면서 비교하다가 다른 문자가 나오면 left+1 이랑 right 랑 비교해서 같다면 left를 없애고 계속 진행 left 랑 right-1 랑 비교해서 같다면 right를 없애고 계속 진행 둘 다 안되면 일반 문자열로 판별 하도록 하였는데, 이런식으로 설계를 하니 left+1 이랑 right 도 같고 left 랑 right-1 도 같을 수 있기에 해당 경우에는 둘 다 진행을 해봐야 한다. baaba로 설명을 해보면 left (0번째 index) : b right (4번째 index) : a left와 right가 다..

[백준 17249번] 태보태보 총난타

이 문제는 정규표현식을 사용할 줄 아는지에 대한 문제였다. 문제의 얼굴을 표현하는 특수문자들이 정규표현식에서 사용되고 있는 문법이기에 이를 정규표현식의 특수한 기능이 아닌 특수문자 그 자체로 사용하기 위해서는 백슬래시(\)를 사용해서 표현해야한다. 즉 (를 표현하기 위해서는 "("가 아닌 "\\("처럼 표현해야 한다. 그리고 경우의 수는 4가지로 1. 왼쪽 오른쪽 둘 다 주먹을 지르지 않은 경우 2. 왼쪽만 3. 오른쪽만 4. 둘 다 지른경우 로 나뉜다.

[Javascript] csvtojson 한글 깨짐 현상 해결(공공데이터 사용)

공공데이터 포털에서 다운받은 csv파일을 database에 저장하기 위해 json형식으로 변환하는 과정에서 csvtojson 모듈을 이용하였는데, 한글 깨짐 현상이 발생하여 이를 해결하는 과정을 정리한 글이다. 공공데이터 공공데이터를 활용하기 위해서 api를 사용하거나, json파일을 제공받을 수도 있지만, csv파일 밖에 지원을 해주지 않아 csv파일을 우선 다운로드 받았다. 아래는 공공데이터 사이트이다. http://www.data.go.kr/index.do csvtojson node.js를 이용해서 백엔드를 구현하고 있었기에 csv파일을 json형식으로 변환해주는 좋은 모듈인 csvtojson을 발견하여 이용하기로 했다. 아래는 csvtojson의 api를 설명해놓은 사이트이다. https://ww..

Web/Javascript 2020.10.29

[JAVA] 문자열 표현 (String, StringBuffer, StringBuilder)

Java에서 문자열을 표현하는 방법에는 3가지가 존재한다. String, StringBuffer, StringBuilder 각각의 특징과 차이점에 대해서 알아보자. 특징 String String은 character의 배열이다. String들은 상수이기 때문에 한 번 생성된 후에는 값을 바꿀 수 없다.(immutable) 그렇기 때문에 삽입, 삭제보다는 검색에 유리하다. 개별 character들을 검색하고, string들을 비교, 검색하고, substring들을 추출하고, 모든 character들을 대문자나 소문자로 변경한 복사본을 만들 수 있는 함수를 제공한다. Java에서는 +로 문자열을 병합할 수 있는 연산자를 지원하고, 다른 객체들을 스트링으로 변환하는 것도 지원한다. 문자열 병합은 StringBu..

전공공부/JAVA 2020.10.19

[프로그래머스] 탐욕법(Greedy) > 큰 수 만들기 (java)

탐욕법(그리디 알고리즘, Greedy Algorithm) 그리디 알고리즘(욕심쟁이 알고리즘)이란 "매 선택에서 지금 이 순간 당장 최적인 답을 선택하여 적합한 결과를 도출하자" 라는 모토를 가지는 알고리즘 설계 기법이다. 그리디 알고리즘에 관한 좀더 자세한 내용은 아래를 확인하자. 그리디 알고리즘 - 나무위키 그리디 알고리즘(욕심쟁이 알고리즘, Greedy Algorithm)이란 "매 선택에서 지금 이 순간 당장 최적인 답을 선택하여 적합한 결과를 도출하자" 라는 모토를 가지는 알고리즘 설계 기법이다. 예를 들어 namu.wiki 우선, 나의 마지막 코드를 보기 전에 문제를 맞추기 위한 여정을 말해보려한다. 같이 헛다리 장인의 헛다리를 하나씩 살펴 보도록 하자. 나의 설계 1. 처음 나의 설계는 이러했다..

[알고리즘] 소수 판별 구현 (Java)

프로그래머스를 이용해서 코딩테스트를 하다가 굉장히 좋은 효율의 소수 판별 isPrime()을 구현한 것을 발견하고, 내 나름대로의 의견을 추가하고 수정해서 정리해두려한다. 우선 아래의 코드를 조금 더 쉽게 이해하기 위해 두 가지를 알면 좋다.! 1. 2를 제외한 나머지 짝수들은 모두 소수가 아니다. 2. n(숫자)가 소수인지 확인하기 위해 √n 보다 큰 수를 나눠보는 것은 무의미한 일이다. 왜냐면 n이 √n 보다 큰 수로 나눠진다는 것은 몫으로 √n 보다 작은 수가 나온다는 말인데, 그러면 √n 보다 큰 수로 나눠떨어지기 전에 이미 소수가 아님을 발견 할 수 있게 된다. -> "유레카!" 이를 이해하고 나서 해당 코드를 함께 보자. if(a==2) count++; if(a%2!=0 && isPrime(a..

[프로그래머스] 완전탐색 > 소수찾기 (java)

레벨에 비해서 꽤나 푸는데 시간이 걸렸다... 아직은 알고리즘에 대한 지식이 너무 부족함을 느꼈다. 우선 나의 코드이다. public int solution(String number) { List numbers = stringToStringList(number); List result = new ArrayList(); Set resultSet = new HashSet(); for (int i = 1; i [1] [2] -> [2] [1, 2] -> [1, 2], [2, 1] 결국 순열의 결과가 나오는데, 그 당시에 이 아이디어를 생각해낸 나는 "유레카"를 외쳤다... 여튼 조합은 순열과 다르게 순서를 요하지 않기 때문에, 순열에서 중복을 제거한 것이 조합이므로, 나처럼 조합과 순열을 혼합하여 코드를 사용..