분류 전체보기 76

Error) java: class, interface, or enum expected 해결

File-Settings-Editor-File Encodings Path 추가해서 에러가 난 디렉터리 또는 파일에 Encoding 설정을 해주면 됩니다 그래도 안된다면 새로 파일을 추가하고 코드를 복붙하는게 가장 빠릅니다. 저 같은 경우에는 로그나 코드에 인코딩 설정을 바꿨는데, 저런 에러가 생기더라구요 한글이 깨지는 현상이 생겨서 해결하려다가 에러를 만나게 된; 원인은 BOM(Byte Order Mark) 이라는 것이 생겨서 그렇습니다. 유니코드의 인코딩 방식에는은 빅엔디안(BE)과 리틀엔디안(LE)이 있습니다. 둘의 차이는 바이트를 읽는 순서의 차이인데, 이 것을 파일에 명시하기 위해 앞에 인코딩별 BOM 값을 살짝 넣어 놓습니다.

📖 Java&Spring 2023.06.26

프로그래머스 - level3/베스트 앨범/C++

해결방법 총 두 가지의 자료구조를 사용했음 1) 많이 재생된 장르가 뭔지 → key를 장르로 하고 value에 같은 장르의 전체 재생 횟수를 뒀음 2) 같은 장르 내에서 많이 재생된 노래 순서 → 고유 번호, 장르, 재생횟수를 가지는 struct를 만들어서 sort 해줌 두 개를 재생 횟수를 기준으로, 내림차순(DESC) 정렬해줬음 코드 #include #include #include #include #include using namespace std; struct Music { int idx=0; string genre; int play = 0; Music(int _idx, string _g, int _p):idx(_idx), genre(_g), play(_p){} }; map maxGenre; boo..

프로그래머스 - level2/가장큰수/C++

해결방법 이 문제는 정렬(sort)을 활용하여 풀 수 있음 제한 사항에 "정답이 너무 크니 문자열로 바꿔라"라고 있는데, int 형 배열 numbers를 string 배열로 바꾼 후, 정렬을 해줄 때 3번째 인자의 함수에서 커스텀 비교 함수를 넣어주면 됨 처음에는 sort 함수에서 to_string으로 바꿔서 numbers 배열의 순서를 바꿨었는데 시간초과가 되었음 🙁 참고사항 stl에서 제공하는 sort 함수의 파라미터는 위와 같습니닷 세 번째 파라미터가 뽀인트인데, 비교하고 싶은 두 개의 요소(인자)랑 return 값을 맞춰서 작성해줘야 합니다. 이 문제의 경우에는 조건을 숫자 1과 숫자 2를 붙여서 비교했을 때 더 큰 값만 넣어주면 됩니다. 예를 들어서, "6"과 "10"을 비교 시, 610 또는 ..

프로그래머스 - level 3/최고의 집합/C++

해결방법 문제 설명에 두 가지 조건이 있는데, 그중 두 번째 조건인 "위 조건을 만족하면서 각 원소의 곱이 최대가 되는 집합"이라는 것에 힌트를 얻을 수 있음 원소의 곱이 최대 → 나눗셈을 활용하여 해결 원소들의 합(s)을 원소의 개수(n)으로 나눠 몫을 구하면 원소 1개를 구할 수 있음 그러면 s에서 위에서 구한 원소 1개를 빼주면 (s -= div) 나머지 원소도 구할 수 있음 n > s인 경우(예시의 n=2, s=1)에 대한 예외 처리도 추가해 주면 됨 코드 #include #include #include #include using namespace std; vector solution(int n, int s) { vector answer; if(n>s) { answer.push_back(-1); ..

🌸 startsWith()/endWith() 문자열의 시작과 끝

startsWith()와 endWith()는 함수명으로 유추해볼 수 있듯이, 문자열에 대해 특정 문자로 시작하는지/끝나는지를 확인할 수 있는 함수 입니다. 아래는 간단한 예시 입니다. String str = "@@myId"; System.out.println(str.startsWith("@")); // true System.out.println(str.endWith("@")); // false 이런 식으로 특정 문자열에 대한 확인을 할 수 있습니다. 회원가입 하려는 사용자가 유효하지 않은 문자열을 사용하지는 않는지, 시작/끝 문자열에 있으면 안되는 문자열이 있는지 등등 확인할 때 활용될 수 있겠네욤 startsWith() Syntax public boolean startsWith(String chars)..

📖 Java&Spring 2023.04.04

@JsonProperty와 @JsonNaming

클라이언트와 연동 규격을 정의하며, JSON 형식을 변경하게 되었습니다. 원래 사용하던 연동 방식은 카멜 케이스 (Camel Case) 방식이었는데, 연동에 있어 최대한 빠르게 서비스를 하기 위해서 다 소문자로 변경해달라는 요구사항이 있어서 @JsonProperty를 사용해서 변경했습니다. 기존에는 REST API 메시지를 받을 때 @RequestBody를 사용해서 처리하고 있었어서 변수 이름을 바꾸는건 비효율적이었다 💦 🕒 JSON 명명 규칙 3가지 표준은 아니지만 아래의 3가지 스타일로 많이 사용한다. Pascal camelCase snake_case 만약 내 이름을 표현하기 위한 네이밍을 하고 있다면 // Pascal MyName // camelCase myName // snake_case my_n..

📖 Java&Spring 2023.03.17

Java의 Hash 알고리즘 MessageDigest

요즘 핫한 보안 문제 ❗ 이번에 신규 개발하는 기능에도 보안을 위해 사용자의 정보가 담긴 내용은 암호화를 하기로 했답니다. Java에서 Hash 값 생성을 할 때 많이 쓰는 클래스는 MessageDigest인데, 오늘은 이 친구를 정리해보겠습니다. 🔐MessageDigest https://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html MessageDigest (Java Platform SE 7 ) This MessageDigest class provides applications the functionality of a message digest algorithm, such as SHA-1 or SHA-256. Message dig..

📖 Java&Spring 2023.03.16

Composite Pattern

조금 예전에 공부했던 디자인 패턴인데, 다시 복습하면서 정리해보았다 디자인 패턴도 찾아보며 개발했던 열정 어디갔니 🥹 Composite 뜻 OOP에서 컴포지트는 하나 이상의 유사한 객체를 구성으로 설계된 객체로 모두 유사한 기능을 가짐 객체 그룹을 조작하는 것 처럼 단일 객체를 조작할 수 있음 Composite Pattern 클라이언트가 복합 객체/단일 객체를 동일하게 취급하는 것을 목적으로 함 트리 구조로 작성, 전체-부분 관계 표현 트리구조를 다룰 때, 개발자는 리프노드와 브랜치 구별해야함 복잡하게 만들지 않기 → 인터페이스 활용해서 작성한다던가 Client 클래스는 Leaf와 Composite 클래스에 직접 참조 하지 마세욥 🙅‍♀️🙅‍♀️ 인터페이스인 Component만 참조하기 Leaf는 Com..

Intellij 자주 사용하는 단축키

Window 기준입니다 🫠 터미널 창 켜기 단축키: ALT + F12 또는 View - Tool Windows - Terminal 코드 검색 ⭐ Ctrl + B : 해당 코드가 정의된 곳으로 이동하기 Ctrl + Alt + B : 해당 코드가 구현된 곳으로 이동하기 Ctrl + F : 파일 검색 Ctrl + E : 최근에 열었던 파일 목록 열기 Ctrl + Shift + E : 최근에 수정한 파일 목록 열기 Ctrl + Shift + F : 전체 코드에서 단어 검색하기 Ctrl + F : 소스에서 단어 검색하기 Ctrl + R : 소스에서 단어 검색 및 변경하기 Ctrl + Alt + 좌/우 방향키 : 이전/이후 포커스로 이동하기 Ctrl + G : 코드의 특정 라인으로 이동하기 Ctrl + Shift ..