본문 바로가기

전체 글9

프로그래머스 알고리즘 문제 풀이 - 전화번호 목록 (Java) 문제 링크프로그래머스 - 전화번호 목록풀이 아이디어전화번호 목록에서 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를, 그렇지 않으면 true를 반환하는 문제입니다. 두 번호의 접두어 관계를 판별하기 위해 완전탐색을 사용한다면, 문제의 조건인 최대 100만개의 원소를 O(n²) 의 시간 복잡도로 비교해야 하므로 시간 초과가 발생합니다. (100만 * 100만 = 1조) 접두어 관계 판별 전, 전화번호 목록을 사전순으로 정렬하여 시간복잡도를 낮출 수 있습니다.전화번호 목록을 사전순으로 정렬하면, 인접한 두 원소 A, B (A가 앞)에 대해 다음 두 가지 성질이 성립합니다. 1. B→A 방향의 검사가 필요 없습니다:사전순에서 B는 A보다 뒤에 있으므로, B가 A의 접두어가 되는 경우는 존재하지 않.. 2026. 5. 22.
프로그래머스 알고리즘 문제 풀이 - 폰켓몬 (Java) 문제 링크프로그래머스 - 폰켓몬풀이 아이디어종류가 중복되는 N마리의 폰켓몬 중에서 N/2 마리를 골라, 가장 많은 종류의 폰켓몬 수를 골랐을 경우, 그 종류 수를 반환하는 문제입니다. 종류 수의 최댓값을 구해야 하므로 먼저 중복을 제거할 필요가 있습니다. 단일값 저장만 필요하고, 순서 유지가 필요 없으므로 HashSet을 사용합니다. 중복을 제거한 종류 수를 기준으로 두 가지의 경우가 있습니다.종류 수 ≤ N/2: 종류별로 한 마리씩만 골라도 종류 수를 초과하여 고를 수 없기에 종류 수가 답입니다.종류 수 > N/2: 종류가 아무리 많아도 고를 수 있는 종류의 수가 N/2개로 제한되므로, N/2가 답입니다.따라서 답은 min(종류 수, N/2)입니다.정답 코드import java.util.Set;impo.. 2026. 5. 22.
프로그래머스 알고리즘 문제 풀이 - 완주하지 못한 선수 (Java) 문제 링크프로그래머스 - 완주하지 못한 선수풀이 아이디어참가자 명단과 완주자 명단을 비교하여, 딱 한 명 완주하지 못한 사람을 찾는 문제입니다.두 명단이 각각 배열로 주어지는데, 완주자 명단을 순회하며 해당 완주자와 동일한 이름의 사람을 참가자 명단에서 지운다면 참가자 명단에 마지막으로 남는 한 사람이 완주하지 못한 사람이 됩니다. 참여 선수의 수는 최대 10만명 이므로, 처음에 주어진 배열을 그대로 사용한다면 완주자 한 명 마다 참가자 명단 전체를 순회해야 하기에 O(n²)의 시간복잡도를 가지게 됩니다.이는 최대 선수 명수인 10만명의 경우, 100,000 × 100,000 = 100억 번의 연산으로, 일반적인 Java의 시간 제한 기준인 3천만 번을 훨씬 넘어서게 됩니다. 완주자 배열을 순회하며 같은.. 2026. 5. 21.
커머스 플랫폼 개발 전 알아야 할 법적 요구사항 한국에서 커머스 서비스를 운영하려면 거래 기록을 어떻게 보존할 지, 개인정보를 어떻게 다뤄야 하는 지 등 법률로 정해진 의무들이 있습니다. 이걸 모르고 서비스의 DB를 설계하면 나중에 설계를 갈아엎어야 할 수도 있기에 개발 전 반드시 짚고 넘어가야 합니다.이번 글에서는 그러한 법적 의무들에 대해 알아보도록 하겠습니다.본 글은 개발자 시점에서 정리한 자료이며, 법률 자문이 아닙니다. 작성 과정에서 법령 해석이나 조항 인용에 오류가 있을 수 있습니다. 실제 사업 진행 시에는 관할 기관 또는 전문가의 자문을 받으시기 바랍니다. 또한 법령은 개정될 수 있으므로 글 작성 시점(2026년 5월) 이후의 변경사항은 반영되어 있지 않을 수 있습니다. 법적 지위 구분법령에서는 커머스 플랫폼의 관계자들을 다음과 같이 구분.. 2026. 5. 21.
좋은 소프트웨어 개발자란? 이번 글에서는 좋은 소프트웨어 개발자란 무엇인지에 대해 개인적으로 생각하는 바를 적어볼까 합니다. 42서울이라는 교육기관에서 1000명에 가까운 개발자들과 함께 생활하고, 현업에서 다양한 연차의 개발자들을 만나며 느낀 점을 바탕으로 정리한 내용입니다. 좋은 개발자의 정의제가 생각하는 좋은 개발자의 정의는 실제 현장에서의 역량을 기반으로 합니다.현장에서 개발자로 일하며 얼마나 가치를 만들어내는가가 중요하다고 보는데, 그 가치는 크게 문제해결력, 협업능력, 직업인으로서의 태도에서 나온다고 생각합니다. 그리고 이 세 가지 역량이 높은 개발자가 좋은 개발자라는 것이 제 생각입니다.문제해결력기업이 개발자를 채용할 때 기대하는 바는, 요약하자면 "지불한 급여 이상의 부가가치를 창출해주면 좋겠다"일 것입니다.여기서 .. 2026. 5. 15.
JWT 토큰에 대해 JWT 토큰이란?JWT 토큰은 Json Web Token의 약자로, 웹 통신 시 클라이언트의 인증에 사용되는 JSON 형태의 토큰 값입니다.최근, 서버 측에서 토큰 인증 방식으로 요청을 보낸 클라이언트의 신원을 확인할 때 JWT토큰을 많이 사용합니다. Session 기반 인증과는 다르게JWT토큰을 사용한 인증 시, 서버측에서 별도의 DB 조회가 필요 없어 효율적이라는 장점이 있습니다.JWT 토큰의 구조eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyQGV4YW1wbGUuY29tIiwicm9sZXMiOlsiUk9MRV9BRE1JTiJdLCJleHAiOjE3NTA4MjYyODgsImlhdCI6MTc1MDczOTg4OH0.cSW65JDV0wTpSIfQV4KPE8k.. 2025. 6. 29.