GiantStepDEV
article thumbnail
파이썬(Python) - pygame 라이브러리를 이용해 Pong! 게임 만들기
👩‍💻 Language/Python 2023. 2. 1. 21:12

파이썬의 대표 라이브러리 중 하나인 pygame을 이용해 Pong! 게임을 만들어보았습니다. 파이썬으로 만들기 전에 C / C++ 로 구현해보는 방법도 찾아봤는데 raylib 세팅하다가 결국 안되어서 시간 다 날려먹고.. 비교적 간단한 파이썬으로 구현하기로 마음을 틀었습니다. 하핫.. 혼자 만들기엔 어려워서 유튜브의 힘을 빌렸습니다! ^^ '나도코딩' 님의 파이썬 게임 만들기 영상을 참조하였습니다. 기본적인 파이썬 지식 혹은 프로그래밍 지식이 없어도 충분히 따라할 수 있을 정도로 설명을 굉장히 자세히 잘해주십니다. https://youtu.be/Dkx8Pl6QKW0 개인적으로 코드 작성한 것 보다 이미지 찾는 시간이 더 걸렸어요..😅 저는 슈퍼마리오 이미지로 구현해보았습니다. 소리도 넣으니 훨씬 더 게임..

article thumbnail
자바(Java) [백준] 1718번 : 암호
🔄 Algorithm/BaekJoon 2023. 2. 1. 19:50

문제 Vigenere cipher이라는 암호화 방법은 암호화하려는 문장 (평문)의 단어와 암호화 키를 숫자로 바꾼 다음, 평문의 단어에 해당하는 숫자에 암호 키에 해당하는 숫자를 더하는 방식이다. 이 방법을 변형하여 평문의 단어에 암호화 키에 해당하는 숫자를 빼서 암호화하는 방식을 생각해 보자. 예를 들어 암호화 키가 love이고, 암호화할 문장이 “nice day” 라면 다음과 같이 암호화가 이루어진다. 제시된 평문의 첫 번째 문자인 ‘n’은 해당 암호화 키 ‘l’의 알파벳 순서가 12 이므로 알파벳상의 순서에서 ‘n’보다 12앞의 문자인 ‘b’로 변형된다. 변형된 문자가 ‘a' 이전의 문자가 되면 알파벳 상에서 맨 뒤로 순서를 돌린다. 예를 들면 평문의 세 번째 문자인‘c’는 알파벳 상에서 3 번째이..

자바(Java) - 컬렉션 프레임워크(5) Comparable, Comparator
🗄️ Backend/Java 2023. 2. 1. 19:16

Comparable 인터페이스? 클래스 정렬을 구현할 수 있도록 해주는 인터페이스이며, TreeSet 컬렉션에서 사용해야 합니다. 자기 자신과 전달받은 매개변수를 비교하는 인터페이스 CompareTo() 메소드를 오버라이딩 해서 정렬조건을 구현해야 합니다. compareTo() 반환 값 양의 정수 : 정렬 조건 음의 정수 : 현 상태 유지 0 : 두 객체가 동일하다는 의미로 Set 특성에 의해 해당 객체가 표시 되지 않습니다. 따라서, 이 경우에는 하위 조건을 추가해줘야 합니다. 🐶예제1 public class CarSort implements Comparable { String modelName; int modelYear; String color; public CarSort(String modelNam..

article thumbnail
자바(Java) - 컬렉션 프레임워크(4) 검색 기능을 강화 시킨 컬렉션(TreeSet, TreeMap)
🗄️ Backend/Java 2023. 2. 1. 18:56

TreeSet 클래스 데이터가 정렬된 상태로 저장되는 이진 검색 트리(binary search tree)의 형태로 요소를 저장 이진 검색 트리 트리는 자료사이의 계증 구조를 나타내는 자료 구조 입니다. 데이터를 추가하거나 제거하는 등의 기본 동작 시간이 매우 빠릅니다. 자식노드는 0,1,2개만 가질 수 있습니다. 간단한 검색 트리 예제 23, 10, 48, 15, 7, 22, 56 트리 생성 루트(root)-23 를 기준으로 root 보다 작으면 왼쪽, 크면 오른쪽으로 배치됩니다. 10은 23보다 작으므로 왼쪽, 48은 10보다 크므로 오른쪽 15는 23보다 작으므로 왼쪽, 10보다 크므로 오른쪽 7은 23보다 작으므로 왼쪽, 10보다 작으므로 왼쪽 48은 23보다 크므로 오른쪽 위와 같이 트리가 자동으..

article thumbnail
자바(Java) - 컬렉션 프레임워크(3) Set(HashSet)
🗄️ Backend/Java 2023. 1. 31. 22:07

HashSet 순서를 보장하지 않으며 중복 값을 허용하지 않습니다. 중복 여부 확인은 HashCode()의 리턴 값을 이용 합니다. (경우에 따라서 오버라이딩) 수학의 집합과 유사한 개념(합집합, 교집합, 차집합) import java.util.Arrays; import java.util.HashSet; public class Main { public static void main(String[] args) { HashSet set = new HashSet(); set.add(new Member(1000, "양콩미")); set.add(new Member(1001, "강민경")); set.add(new Member(1002, "홍길동")); Member member = new Member(1003, "한..

자바(Java) - 컬렉션 프레임워크(2) Map(HashMap, Hashtable, Properties)
🗄️ Backend/Java 2023. 1. 31. 21:40

Map 인터페이스 💡Map 인터페이스는 하나가 아닌 쌍(pair)로 되어 있는 자료를 관리하는 메소드로 선언되어 있습니다. Map은 키key와 값value로 이루어져 있습니다. 키key는 중복 허용이 안되고, 값value는 중복이 가능합니다. Hash? 데이터에 대한 검색과 저장에서 아주 우수한 성능을 보이며, 쓰임새가 많습니다. Hash로 값을 생성하면 고유 주소 값이 생기는데 이것을 숫자로 변환한 것을 hashCode라고 합니다. 즉, 자바에서 해시코드는 Heap 영역에 인스턴스에 대한 참조 값이라고도 부를 수 있습니다. Hash 함수란? 데이터의 효율적인 관리를 위해 임의의 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑해주는 함수 암호화기법이라고도 볼 수 있습니다. Hash Collisio..

article thumbnail
자바(Java) - 컬렉션 프레임워크(1) List(ArrayList, LinkedList, Vector)
🗄️ Backend/Java 2023. 1. 30. 20:13

List 인터페이스란? 리스트는 배열과 비슷한 자바의 자료형으로 배열보다 편리한 기능을 많이 가지고 있습니다. 리스트와 배열의 가장 큰 차이점은 리스트는 크기가 정해져 있지 않고 동적으로 변한다는 점 입니다. 이처럼 데이터의 크기를 알 수 없을 때 유용하게 사용 가능합니다. 요소의 저장 순서 유지 같은 요소의 중복 저장 허용 데이터 크기가 고정되어있지 않음 (동적 할당) 다양한 메소드 제공 List 컬렉션 클래스의 종류 ArrayList ⭐ LinkedList Vector Stack ArrayList, LinkedList, Vector는 사용 방법이 동일(내부 구조가 거의 비슷함)하기 때문에 각 클래스를 선언할 때에는 아래 처럼 각각 따로 생성하지 말고 List로 생성하여 필요에 따라 다르게 하는 것이 ..

자바(Java) - 컬렉션 프레임워크
🗄️ Backend/Java 2023. 1. 30. 19:38

자바는 배열의 여러가지 문제점을 해결하고, 알려진 자료 구조를 바탕으로 객체를 효율적으로 추가/삭제/검색 할 수 있도록 java.util 패키지에 컬렉션과 관련된 인터페이스와 클래스를 제공하고 있는데 이것을 컬렉션 프레임워크라고 합니다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것 입니다. 이러한 컬렉션 프레임워크는 자바의 인터페이스를 사용하여 구현됩니다. (java.util 패키지에 포함.. 자바에서 두번째로 많이 사용하는 패키지) 제일 많이 사용되는 패키지는 java.lang 컬렉션 프레임워크 주요 인터페이스 인터페이스 설명 구현 클래스 List 순서가 있는 데이터의 집합 데이터의 중복 허용 ArrayList, LinkedList, Vector,..

article thumbnail
자바(Java) - 개인 미니 프로젝트 2 (포켓몬 게임) v1.1
📂 My Project 2023. 1. 28. 12:51

안녕하세요. 오랜만에 찾아왔습니다. 객체지향의 객도 아직 파악이 안되었다 생각합니다만, 그렇다고 그저 익숙해질 때까지 가만히 기다리고 있을 수 없어 포켓몬 게임을 하나 만들었습니다. 게임이라고 하기에는 굉장히 부족하지만 차차 제가 넣고 싶은 기능을 추가로 구현할 생각이어서 그냥 게임이라고 지어봤습니다. 많은 분들의 추억을 불러일으킨 포켓몬! 저도 어릴 때 포켓몬을 보며 자라온 사람 중 한명인지라.. 그 기억을 더듬으며 재밌게 작업했습니다. 아직 많이 부족합니다. 포켓몬은 두 마리 밖에 없고, 기능도 단순하게 짰습니다. 추후에 넣고싶은 기능 중 하나는 각 포켓몬 별로 다양한 물리공격과 방어력이 존재합니다. 하여 각 특성을 포켓몬에 부여하고, 포켓몬1이 포켓몬2에게 공격할 때 포켓몬2의 HP가 어떠한 방식으..

article thumbnail
자바(Java) [백준] 1157번 : 단어공부
🔄 Algorithm/BaekJoon 2023. 1. 27. 21:31

문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입력 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. import java.util.Scanner; public class Main { public static void main(String[] args) { int[] alphabet = new int[26]; char result = 0; Scanner sc = new Scan..