유물 73

[VS Code] 플러터 개발에 Android Studio 대신 VS Code를 사용하게 된 계기

플러터 개발을 시작하면서부터 안드로이드 스튜디오를 사용해 왔습니다. 초보자를 위한 플러터 강의 대부분이 안드로이드 스튜디오를 사용했기 때문에 자연스러운 선택이었다고 생각합니다. VS Code로도 플러터 개발을 할 수 있다는 것을 알았지만, 사용자에게 불친절하다는 선입견을 가지고 있었습니다. 안드로이드 스튜디오 사용에 만족했기 때문에 지금까지 잘 사용하고 있었습니다. 최근 깃헙 코파일럿 챗 기능이 VS Code에서 출시되었을 때 VS Code로 전환하는 것을 잠깐 생각했습니다. 안드로이드 스튜디오에서는 해당 기능을 사용할 수 없었기 때문입니다. 하지만 안드로이드 스튜디오에서도 언젠가 출시될 것이라고 믿었고, 지금은 지원되고 있습니다. 그런 식으로 안드로이드 스튜디오를 계속 사용해왔습니다. 그러다 어제 Fi..

유물 2024.01.27

<보안> XSS, CSRF

🎯 XSS, CSRF 모두 스크립팅 공격의 일종 XSS 크로스 사이트 스크립팅(Cross-Site Scripting)의 약자입니다. 웹 사이트의 방문자가 글을 남겨서 글을 읽는 사람들에게 공격을 가하게 됩니다. 따라서 방문자가 웹사이트를 신뢰하는 경우에 발생합니다. 예를 들어 블로그에 글을 쓴다고 했을 때 글 내용 중에 script를 삽입할 수 있습니다. 사용자가 해당 글을 읽었을 때 아래와 같은 코드라면 문제가 없겠지만... 아래와 같은 경우라면 쿠키에 저장되어 있는 세션 아이디가 탈취당할 수 있습니다. 하지만 모던 웹에서는 CORS를 제한하기 때문에 현재 사이트에서 다른 도메인의 사이트로 요청하는 것이 불가합니다! 혹시나 옛날옛적 브라우저를 쓰고 계시다면 최신 브라우저 사용을 추천드립니다. CSRF ..

유물 2022.04.11

<백준(파이썬)> 10989번: 수 정렬하기 3

🤖 문제 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 정렬을 사용하면 메모리 초과가 됩니다. 주어지는 수의 개수가 최대 1천만개로 이를 모두 저장해서 정렬한다면, 4바이트 * 1천만 = 40MB에 달하여 상당한 메모리를 차지한다고 볼 수 있습니다. 다만, 주어지는 수의 범위는 최대 1만까지이기 때문에 각각의 수를 인덱스로 하는 배열을 만들고 개수를 기록한 후 앞에서부터 하나씩 뽑아서 출력합니다. (아래의 코드로 PyPy3에서는 메모리 초과, Python3..

유물/└ 백준 2022.04.07

<프로그래머스(파이썬)> 입국심사

🤖 문제 https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 풀이 이분 탐색을 활용하여 풀이를 진행하였습니다. 알고리즘 문제가 어떤 유형인지 파악하면 풀이가 쉽게 떠오르기도 합니다. 이번 문제는 처음에 유형이 떠오르지 않아 한참 고민한 케이스였습니다.

유물/알고리즘 2022.04.07

<프로그래머스(파이썬)> 정수 삼각형

🤖 문제 https://programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 풀이 문제의 삼각형과 동일한 형태의 삼각형을 만들고 최댓값을 기록하는 방식으로 풀어나갔습니다. 최댓값을 기록하기 위한 새로운 자료형 없이 기존 삼각형에 값을 덧씌우는 방식으로 개선할 수 있을 것 같습니다.

유물/알고리즘 2022.04.07

<백준(파이썬)> 10815번: 숫자 카드

🤖 문제 https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 풀이 이진 탐색으로 풀이를 진행했습니다. 아래와 같이 처음으로 제출한 코드를 정돈할 수 있을 것 같아 정리해보았습니다. 1. 첫 코드에서 11번째 줄 answer변수에 굳이 결과를 담지 않고, 아래의 코드 26번째 줄과 같이 바로바로 출력했습니다. 2. 첫 코드 13번째 줄 for문 안에서 인덱스를 사용할 일이 없습니다. 아래의 코드 11번째 줄과 같이 배열..

유물/└ 백준 2022.04.01

<릿코드(파이썬)> 240. Search a 2D Matrix Ⅱ

🤖 문제 https://leetcode.com/problems/search-a-2d-matrix-ii/ Search a 2D Matrix II - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 풀이 이진 탐색으로 풀이를 진행했습니다. 13번째 줄에서 배열의 범위를 초과한다는 오류가 발생하였습니다. end의 범위를 구할 때 1을 빼주지 않았기 때문입니다. 인덱스의 범위는 0부터 시작하고 마지막 인덱스는 배열의 길이에서 1을 빼야 하는데 아직도 한번씩 실수를 하게 ..

유물/알고리즘 2022.04.01

<프로그래머스(파이썬)> [3차] 파일명 정렬

🤖 문제 https://programmers.co.kr/learn/courses/30/lessons/17686 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 풀이 파이썬에서 정규표현식을 활용하기 위한 re 라이브러리를 불러와서 풀이를 진행했습니다. 주어진 파일명을 head, number, tail로 쪼개는 split_name 함수를 정의하였습니다. 파일명의 문자를 하나씩 돌면서 조건을 확인하는데 i가 마지막 인덱스일 때 조건문을 잘못 설정해서 고생했습니다. 런타임 에러도 발생하였는데 rstrip(..

유물/알고리즘 2022.03.31

<백준(파이썬)> 1715번: 카드 정렬하기

🤖 문제 https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 풀이 문제를 너무 쉽게 판단하고 '틀렸습니다.'라는 결과를 맞이하게 되었습니다. 카드 묶음을 오름차순으로 정렬한 후 앞에서부터 순서대로 더하면 답이 나올 것이라고 생각했습니다. 아래 코드의 11~13번째줄과 같이 첫번째, 두번째 숫자는 N-1번 더하고, 마지막 숫자는 1번만 더할 것이라는 개념을 바탕으로 풀이를 작성하였습니다. 이 풀이의 문제는 아래의 예시를 해결할 수 없다..

유물/└ 백준 2022.03.30

<백준(파이썬)> 10828번: 스택

🤖 문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 풀이 시간초과로 구글링을 하였고, 입력값을 받는 방법을 변경하여 해결했습니다. input() 대신 속도가 더 빠르다고 하는 sys.stdin.readline()을 사용했습니다. 속도 차이가 나는 이유는 버퍼의 크기가 다르기 때문으로 보입니다. sys.stdin.readline() 버퍼의 크기가 커서 한번에 많은 처리를 하는 것입니다. 또한 출력내용을 한번에 모아서 출력하..

유물/└ 백준 2022.03.23