문제신고 시스템을 구현하여 특정 기준에 따라 신고된 유저의 계정을 정지하고, 신고자에게 결과를 메일로 알리는 과정을 코드로 구현하는 문제이다.각 유저의 신고는 중복되지 않게 처리해야 하며, 최종적으로 신고 결과에 따라 신고자가 받은 정지 메일 갯수를 반환한다.풀이정보를 저장할 HashMap들을 초기화한다.각 유저별로 그 유저를 신고한 사람들의 목록을 저장하기 위한 HashMap을 초기화한다. 이때 신고한 사람들의 중복을 허용하지 않기 위해 HashSet을 사용한다.유저별 메일 수신 횟수를 저장할 HashMap도 초기화합니다.신고 정보를 저장한다.신고 기록을 순회하며 신고자와 피신고자를 분리하고, 피신고자의 HashSet에 신고자를 추가한다.신고 횟수 조건을 체크하여 정지 메일을 보낸다.k번 이상 신고된 ..
반복문은 말 그대로 특정 코드를 여러 번 반복 실행할 수 있게 만드는 것을 말한다.그렇기에 상황에 맞는 적절한 반복문을 선택하면 효율적인 코드를 작성할 수 있다.이번 글에서는 Java의 주요 반복문인 for문, while문, 그리고 do-while문에 대해 알아보자.1. for문for문은 반복 횟수가 명확할 때 사용한다.초기화, 조건식, 증감식을 한 줄에 작성해 반복 횟수를 제어할 수 있다.for (초기화; 조건식; 증감식) { //반복할 코드}초기화: 반복 제어 변수를 선언하거나 초기화하는 부분이다.조건식: 반복을 계속할지 여부를 결정하는 조건이다. 이 조건이 true일 때만 반복한다.증감식: 각 반복이 끝날 때마다 실행되어 반복 제어 변수를 증감시킨다.// 예시for (int i = 0; i 위..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b7Kp4q/btsJ4rTbjv4/qaCYJVCBbVH0KW0xvbxQKk/img.png)
Python 언어에 익숙한 개발자라면, Java에서 문자열을 비교할 때 예상치 못한 결과를 마주할 수 있다.Python에서 문자열을 비교하는 경우 == 연산자만 사용해도 문제가 없다.하지만 Java에서는 같은 문자열을 비교하더라도 == 연산자를 사용하면 false를 반환하는 경우가 있다.그 이유를 알기 위해서는 먼저 Java의 메모리 모델을 이해해야 한다. Java 메모리 모델Java에서 문자열이 메모리에 저장되는 방식을 이해하면 문자열 비교 방법을 이해하는데 도움이 된다.문자열 리터럴: 문자열 리터럴은 String Pool에 저장되며, 컴파일 시점에 동일한 값이라면 같은 메모리 주소를 공유한다.new 키워드로 생성된 문자열: new 키워드를 사용해 생성한 문자열은 Heap에 저장되며, 동일한 값을 가진..