컴퓨터공학

    [LeedCode] 175. Combine Two Tables SQL Easy

    문제 설명: 테이블이 두개가 있다. Person 테이블과 Address 테이블이 있는데, personId를 기준으로 주소를 연결해줘야한다. 만약 주소가 존재하지 않으면 null로 표기한다. 문제 풀이: 1. left join으로 Address 테이블을 Person 테이블에 연결한다. 2. 그리고 Person테이블의 PersonId 와 Address테이블의 PersonId를 조건으로 달아준다. Table: Person+-------------+---------+ | Column Name | Type | +-------------+---------+ | personId | int | | lastName | varchar | | firstName | varchar | +-------------+--------..

    [LeedCode] 423. Reconstruct Original Digits from English 파이썬 Medium

    문제 설명: 문자열이 주어진다. 문자열에는 0 부터 9까지 나타내는 단어들이 들어있다. 그 단어들은 섞여 있어서 숫자를 알아볼 수 없다. 이 숫자들을 알아내여, 오름차순 순으로 출력해야한다. 문제 풀이: 숫자들은 개수에 제한없이 문자열에 저장되있다. 특정 알파벳의 개수를 이용하여 숫자들을 재구성해야한다. 1. 0 부터 9까지의 숫자의 영어단어들을 봤을때, 하나의 숫자에만 들어가는 알파벳이있다. 2. z, w, u, x, g 다섯개가 오직 하나의 단어에만 들어가는 알파벳이다. zero, two, four, six, eight. 3. 문자 스트링에서 위 다섯개의 알파벳 개수를 센다. ( 0, 2, 4, 6, 8 ) 의 개수를 의미하게 된다. 4. 그리고 five는 f개수를 세서 four의 개수를 빼면 도출할..

    [LeetCode] 3. Longest Substring Without Repeating Characters 파이썬 Medium

    문제 해석: 문자열이 주어지면, 문자열내에 가장 긴 부분 문자열을 찾아야한다. 반복 문자가 없어야 하는데, 그 말의 뜻은 연속이나 단어 단위로 반복이 되는게 아니다. 단지 이미 있었던 알파벳인지만 확인하면된다. 문제 해설: ( 이해가 갑자기 잘안되서, 많이 해맸다.... ) 슬라이딩 윈도우 1. 아스키코드로 문자의 개수를 저장한다. 2. 투포인터로 시작점 끝점을 지정하고, 와일문을 이용하여 끝점부터 이동시킨다. 3. 끝점을 이동시키기전에, 끝점에 해당하는 알파벳에 카운트를 올려준다. 4. 만약 새로 카운트를 올린 알파벳이 1보다 많다면, 줄어들때까지 와일문을 돌린다. 5. 줄이는 방법은 시작점 인덱스를 늘려주면서, 확인되는 문자들의 카운트들을 내려준다. 6. 그리고 시작점과 끝점을 계산하여 최대값을 구한..

    [LeedCode] 1041. Robot Bounded In Circle 파이썬 Medium

    문제 해석: 명령어가 문자열로 입력된다. 명령어는 각각, G, L, R로 주어지는데, G : 앞으로가기 L : 왼쪽으로 방향전환 G : 오른쪽으로 방향전환 이렇게 로봇은 명령어에 따라 움직일 수 있다. 이 명령어를 계속 수행했을때, 로봇이 무한한 서클에 빠지는지 아닌지를 확인해라. 문제 해설: ( 처음에 방향이 4개니까 최대 5번 반복하면 어찌됬던 같은 위치에 도착한다고 생각했다가 실패했다. ) 1. 두가지 조건으로 무한 써클에 빠지는지 아닌지 알 수 있다. 2. 처음 명령어를 한번 진행했을때 처음 좌표로 오게 된다면 그것은 무한 써클이다. 3. 처음 명령어를 한번 진행했을때 북쪽을 보고 있지 않는다면 그것은 무한 써클이다. 이에 대한 증명이 있는데, 2번은 사실 명령어를 모두 수행후 초기 위치로 오면 ..

    [leedCode] 7. Reverse Integer 파이썬 Medium

    문제 해석: 숫자 한개가 32비트 signed 정수로 주어진다. 이 숫자를 뒤집어야한다. 하지만 정답을 리턴할때 그 뒤집은 숫자가 32 비트 숫자를 넘을 경우 0을 리턴한다. 문제 해설: 1. 입력 받은 숫자를 양수와 음수였을때 처리를 다르게 해야한다. 2. 파이썬에서 숫자를 뒤집는 방법은 문자로 바꾼후에 쉽게 처리할 수 있다. ( 10의 몫과 나머지로 계산하는 무식한 방법도 있다. ) 3. 양수일 경우 그냥 문자로 뒤집은 후, 정수로 리턴한다. 4. 음수일 경우 문자로 변환, 앞의 -를 때고 뒤집는다. 리턴할때 다시 붙이고 정수로 변환한다. 7. Reverse Integer Given a signed 32-bit integer x, return x with its digits reversed. If r..

    [LeedCode] 2. Add Two Numbers 파이썬 Medium

    [LeedCode] 2. Add Two Numbers 파이썬 Medium

    문제 해석: 두개의 링크드 리스트가 주어진다. 각 한자리 숫자가 연결되어 있다. 각 링크드 리스트에 연결되어있는 숫자로 거꾸로 뒤집어 꺼낸다. 이후, 두 숫자를 합하여 링크드리스트에 다시 뒤집어 넣어 리턴한다. 문제 해설: ( 처음에는 숫자를 꺼내서 뒤집고 계산한 다음에 다시 거꾸로 넣어줬다.. BTW 더 좋은 방법이 아래 있다. ) 1. 링크드 리스트에서 순서대로 한자리 숫자를 더하고, 나머지를 저장한다 2. 1번과 마찬가지로 숫자를 더하고, 10으로 나눈 몫을 저장한다. 3. 1번에서 구한숫자는 정답으로 리턴할 리스트에 넣는다. 4. 2번에서 구한 10의 자리 숫자는 다음 숫자를 합할때 포함시킨다. 5. 숫자 두개를 더 했을때 두자리 숫자가 나오는것을 나누기와 모듈러 연산으로 나눠서 다음 계산때 넣어..

    [LeetCode] 200. Number of Islands 파이썬 Medium

    200. Number of Islands 문제 해석: 2차원 바이너리 그리드에서 1은 땅이고 0은 물이다. 그렇다면 이어져있는 땅의 갯수를 세어야한다. 문제 해설: 1. BFS를 진행해서 이어져있는 섬들을 찾아야한다. 2. BFS를 실행하면 모든 이어진 섬을 찾을 수 있는데, 떨어져있는 섬이 존재할 수도 있다. 3. 2중 for문을 사용해서 모든 그리드의 섬을 하나씩 확인해봐야한다. 4. 그리드 리스트에 들어가있는 숫자가 문자라서 그부분을 조심하자. Given an m x n 2D binary grid grid which represents a map of '1's (land) and '0's (water), return the number of islands. An island is surrounded..

    [LeedCode] 56. Merge Intervals 파이썬 Medium

    문제 해석: 배열에 각 시작점, 종료점을 가진 값들이 저장되어 있다. 겹쳐져 있는 구간들을 합치고, 겹치지 않는 모든 간격들은 배열에 넣어 반환한다. 문제 해설: 1. 주어지는 점들은 길이가 모두 다르기 때문에, 간격마다 모두 확인을 해야한다. 처음나온 간격이 다음 간격보다 클수도, 작을수도, 혹은 모두 포함될 수 도 있다. 2. 간격들을 오름차순으로 정렬하여, 하나씩 저장해나가야한다. 3. 새로만든 리스트가 비어있으면 바로 넣는다. 4. 리스트 가장 뒤의 간격의 끝 숫자가 새로 확인되는 간격 첫 숫자보다 작을 경우 리스트에 넣는다. 5. 3번과 4번이 아니라면 간격이 겹친다. 리스트는 이미 정렬되어있기 때문에 마지막의 간격 끝점과 새로 확인될 간격의 시작점을 비교하여 큰 값을 끝점으로 갱신한다. Giv..