전체 글

알고리즘풀이

순열과 중복순열

알고리즘 문제를 풀면서, 매번 순열과 조합에 관한 문제가 나오면 헉!하고... 제대로 구현해보지 못한 것 같아, 이번 기회에 코드를 정리하고자 합니다. 순열 먼저 순열(permutation)입니다. 순열의 정의는 "서로 다른 N개에서 R개를 뽑아서 나열한 것"입니다. 또한 이로 인해 모든 순열의 시간복잡도는 O(n!)입니다. 그렇다면 순서가 상관있을까요? 맞습니다. 순서가 상관있습니다. 이 말의 의미는 다음과 같습니다. 숫자가 0, 1, 2로 총 3개가 있고, 이 중 2개를 뽑는 순열을 생각해봅시다. 순열은 순서가 상관있기 때문에, 즉 순서를 고려하기에, 같은 숫자를 뽑더라도 순서가 다르다면 다른 것입니다. 그렇다면 다음과 같은 순열을 얻을 수 있을 것입니다. {0, 1}, {0, 2}, {1, 0}, ..

알고리즘풀이

[카카오 기출] 2019 카카오 개발자 겨울 인턴십 문제 풀이

하반기 코딩테스트가 곧 몰아칩니다.. 스스로 해결한 문제도 있고, 그렇지 못한 문제도 있지만 모두가 이해할 수 있게끔 풀이하면서 복기할 목적으로 문제 풀이를 해보려 합니다. 레벨 순으로 가면서 풀었던 코드를 분석해보겠습니다. 1. 크레인 인형뽑기 게임 (Level 1) https://school.programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { // 인형 담을 바구니 Stack basket = new Sta..

Java지식

Overloading과 Overriding

이번 시간에는 헷갈리기 쉬운 개념인 Overloading과 Overriding에 대해서 정리해보고자 합니다. Overloading 메소드 이름은 같지만, 파라미터 수, 타입은 다른 메소드를 중복으로 선언하는 것을 말합니다. 이러한 Overloading은 다음과 같은 특징을 가집니다. 메소드 이름이 같아야 합니다. 반환형은 같아도 되고, 달라도 됩니다. 파라미터 개수가 달라야 합니다. 파라미터 개수가 같은 경우, 각 데이터 타입이 달라야 합니다. public class OverloadingTest { void test() { System.out.println("매개변수가 없는 test()"); } void test(int a, int b) { System.out.println("매개변수 " + a + "와..

Java지식

절차적 프로그래밍과 객체 지향 프로그래밍

자바를 공부하는 예비 개발자로서 객체 지향 프로그래밍이 뭔지정도는 알고 있어야 하니까 한 번 정리를 해보려고 합니다.. 객체 지향과 함께 자주 등장하는 절차적 프로그래밍도 함께 다뤄보고요. 들어가기 전, 객체란 무엇이고, 절차란 무엇인지를 먼저 알아야겠습니다. 객체는 실제 세계를 모델링한 것이라고 표현합니다. 모델링된 어떤 주체를 객체라고 할 수 있습니다. 프로젝트를 하든, 알고리즘 문제를 풀든, 항상 어떤 일을 하는 주체가 있어야 할 것입니다. 이해를 돕기 위해, 제가 읽었던 책에(객체지향의 사실과 오해 - 조영호)서 다룬 예를 인용하면, "우리가 손님이 되어 카페에 갑니다. 사계절 내내 아이스 아메리카노밖에 못 먹는 저는 캐셔에게 아아 한 잔을 주문합니다. 이곳 카페는 상당히 규모가 커서, 캐셔는 주..

일상

블로그 이전

#1 블로그 이전 반갑습니다.. 티스토리를 처음 써보네요 기존에는 gatsby와 netlify를 이용한 기술 블로그를 운영했었는데, 어느날 노션에 북마킹되는 제 블로그를 보니 ... 뭔가 제대로 갖춰지지 않은 듯한 느낌이 들더군요 상당히 이상함을 느낀 나머지 기술 블로그를 운영한 순간부터 고민했던 블로그 이전을 실천에 옮기게 되었네요 벨로그도 잠깐 써봤었지만, 아예 새로운 플랫폼으로 옮겨 새롭게 시작해보려합니다 .. 이전에 썼던 글들도 다시 한 번 되새겨보고, 필요없거나 제대로 이해하지 못하고 질러놓은 글들은 모두 없애거나 편집하면서 천천히 재업로드할 예정입니다. 새롭게 시작하는 만큼 조금 더 알찬 내용을 배우고 정리하고 공유하는 코자맨이 되어야겠습니다...

codingjavaman
코딩하는자바맨