장르: 애초에 역경을 딛고 이룩하는 숭고한 사랑이란 없다. 그 역경 자체가 사랑이다.
프로그램 특징: 그 곳에서 살아남는 사랑이 어떤 모습으로 걸어오는지 기다려 보고 싶다.
-
[Java][BOJ 11758] CCW: Counter-Clockwise0604분문제문제 파악첫째 줄에 P1의 (x1, y1), 둘째 줄에 P2의 (x2, y2), 셋째 줄에 P3의 (x3, y3)가 주어진다. (-10,000 ≤ x1, y1, x2, y2, x3, y3 ≤ 10,000) 모든 좌표는 정수이다. P1, P2, P3의 좌표는 서로 다르다.P1, P2, P3를 순서대로 이은 선분이 반시계 방향을 나타내면 1, 시계 방향이면 -1, 일직선이면 0을 출력한다.접근 방법기하의 핵심이론 CCWCCW(Counter-Clockwise): 평면상의 3개의 점과 관련된 점의 위치 관계를 판단하는 알고리즘이를 이해하기 위해선 벡터의 외적 개념 이해가 필요하다. CCW = (X1Y2 + X2Y3 + X3Y1) - (X2Y1 + X3Y2 + X1Y3)벡터의 외적이 |CCW| / 2는 세 점..
-
[Java] for 중첩 루프에서 continue가 어디까지 영향을 미치는지0530분while, for, switch 문 내에서 continue의 동작 범위가 어디까지 인지, 그리고 자주 혼동되는 케이스인 switch 문과의 관계에 대해서도 살펴본다. 기본 개념: continue는 루프 제어문continue는 루프의 다음 반복으로 건너뛰는 제어문이다. 즉, 아래 구조에서 continue는 for 또는 while 루프의 현재 반복을 종료하고 다음 반복으로 진행한다.for (int i = 0; i 출력 결과:0134 switch안에서 continue? → 컴파일 에러while (true) { switch (x) { case 1: continue; // 컴파일 에러 발생 }} continue는 루프 제어문 전용이다. switch는 루프가 아니기 때문..
-
[Node.js] 비밀번호 암호화하기 - bcypt 모듈0530분비밀번호가 req.body에 담겨서 이동할 때 암호화없이 그대로 이동하면 js 코드로 값을 홀랑 알아내버릴 수 있다.해시함수를 이용해 암호화해보자. 한 번 해시된 값은 원래 입력값으로 되돌릴 수 없다. const bcrypt = require("bcrypt");const password = "qwer";bycrypt.hash(password, 10, (err,hash) => { try { // 해시화된 비밀번호를 디비에서 저장하거나 다른 처리 } catch(err) { } });비밀번호를 10번 해시한 후에 hash 함수를 실행할 것이다. 비밀번호가 디비에 저장되면 로그인할 때마다의 비밀번호가 해시된 비번값과 동일한지 확인해야 로그인 처리를 해줄 수 있다. const l..
-
트리 계산을 위한 배열(인덱스) 표현0530분*'Do it! 알고리즘 코딩 테스트 자바편'을 참고했습니다.직관적이면서 편리한 트리 자료구조는 "배열"인덱스01234567값ABCDEFNoneG트리의 노드와 배열의 인덱스 사이 상관관계이동 목표 노드인덱스 연산제약 조건(N = 노드)root nodeindex = 1 parent nodeindex = index / 2not root nodeleft child nodeindex = index * 2index * 2 right child nodeindex = index * 2 + 1index * 2 + 1 위 인덱스 연산 방식은 segment tree나 LCA(lowest common ancestor) 알고리즘에서도 기본이 되는 연산이므로 숙지해야 한다.
-
성장률, 주주 환원율 등이 대출 문턱 상승 요인으로 작용0530분'성장률 쇼크'에…가계부채 증가액 25조원 줄듯 '성장률 쇼크'에…가계부채 증가액 25조원 줄듯'성장률 쇼크'에…가계부채 증가액 25조원 줄듯, 올 부채 증가 목표 87조→62조로 금융당국 고강도 대출관리 예상www.hankyung.com한국은행이 29일 올해 성장률 전망치를 0.8%로 낮춰 잡으면서 금융당국의 가계부채 관리 기조가 강화될 수 있다는 관측이 나온다. 금융당국은 성장률과 물가상승률을 더한 경상성장률을 기준으로 가계부채 증가 규모를 관리하고 있어서다. 경상성장률이 낮아지면 정부의 가계부채 관리가 강화되고 대출 문턱도 높아질 것이란 전망이 나온다.내수 경기 침체, 미국 관세 정책 등이 겹치며 연초 대비 성장률 전망치가 크게 하락하면서 한은은 올해 성장률 전망치를 기존 1.5%에서 0.8%로 하..
-
[Java][프로그래머스] 신고 결과 받기0530분문제 파악매개변수이용자의 ID가 담긴 문자열 배열 id_list ["muzi", "frodo", "apeach", "neo"]각 이용자와 이용자가 신고한 이용자의 ID 정보가 담긴 문자열 배열 report ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"]정지 기준이 되는 신고 횟수 k각 유저는 다른 유저를 신고할 수 있다(중복 신고는 가능하나 신고 1회로 처리). 이때 신고를 k번 이상 받으면 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송한다.id_list에 담긴 id 순서대로 각 유저가 받은 결과 메일 수를 배열로 담아 return접근 방법1. String[] report -> Set report..
-
[JAVA][BOJ 2098] 외판원 순회와 비트 연산0521분문제링크문제 파악TSP(Traveling Salesman Problem) 가중치가 있는 단방향 그래프를 가장 작은 비용을 들이면서 순회하는 경로를 구해라!첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 16) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j로 가기 위한 비용을 나타낸다. 도시 i에서 j로 이동할 수 없는 경우에는 W[i][j]=0이라고 한다항상 순회할 수 있는 경우만 입력으로 주어진다.접근 방법DP[현재도시][현재까지 방문한 도시 리스트] = 남은 모든 도시를 경유하는 데 드는 최소 비용남은 도시를 경유하는 데 드는 최소 비용은 DFS로 구현리스트를 변수 1개에 ..
-
미국의 재정 적자 부담, 달러 약세0521분신용 강등 쇼크… 美 장기국채 금리 2년 만에 5%대로 올라신용 강등 쇼크 美 장기국채 금리 2년 만에 5%대로 올라 안전 자산 지위 약화www.chosun.com신용 강등 쇼크… 美 장기국채 금리 2년 만에 5%대로 올라(조선일보, 김정훈 기자, 2025.05.20)국제 3대 신용평가사 가운데 하나인 무디스가 미국의 국가 신용등급을 한 단계 강등함에 따라 미국 장기 국채 가격 하락으로 금리가 상승했다. 통상 미 국채 금리 상승은 강달러 요인이지만, 등급 하락에 의한 국채 금리 상승은 재정 적자 부담에 달러에 대한 회의론 증폭으로 이어져 약달러 재료가 된다. 소시에테 제네랄 전략가인 수바드라 라자파는 블룸버그에 “장기 국채 금리가 상승하면 미국 정부의 이자비용과 적자가 늘어난다”며 “미 국채의 안전 자산..
-
[JAVA][BOJ 1256] 조합: 사전 찾기0515분문제링크문제 파악N개의 'a', M개의 'z'로 사전을 만들었다. 알파벳 순서로 수록된 사전에서 K번째 문자열 구하기사전에 있는 수가 K보다 작으면 -1 반환N개의 'a', M개의 'z', K번째 문자열1 ≤ N, M ≤ 1001 ≤ K ≤ 1,000,000,000접근 방법각 자리 수까지 만들 수 있는 문자열 개수 중복한 문자를 가지기 때문에 만들 수 있는 문자열의 개수는 N+M개 중 N개 또는 M개를 택하는 것과 같다.순열과 똑같이 전체 중에서 칸막이를 넣는다고 생각하면 된다.그리고 순열의 nCr = n-1 C r-1 + n-1 C r 을 이용하면 DP가 된다. DP부문 문제가 해결된 상황에서 마지막 데이터의 선택 여부에 따른 경우의 수 계산하는 것이다.DP[5][3] = DP[4][2] + DP[..
문제
문제 파악
첫째 줄에 P1의 (x1, y1), 둘째 줄에 P2의 (x2, y2), 셋째 줄에 P3의 (x3, y3)가 주어진다. (-10,000 ≤ x1, y1, x2, y2, x3, y3 ≤ 10,000) 모든 좌표는 정수이다. P1, P2, P3의 좌표는 서로 다르다.
P1, P2, P3를 순서대로 이은 선분이 반시계 방향을 나타내면 1, 시계 방향이면 -1, 일직선이면 0을 출력한다.
접근 방법
기하의 핵심이론 CCW
CCW(Counter-Clockwise): 평면상의 3개의 점과 관련된 점의 위치 관계를 판단하는 알고리즘
이를 이해하기 위해선 벡터의 외적 개념 이해가 필요하다.
CCW = (X1Y2 + X2Y3 + X3Y1) - (X2Y1 + X3Y2 + X1Y3)
벡터의 외적이 |CCW| / 2는 세 점으로 이뤄진 삼각형의 넓이로 이해하면 된다.
1. 1번째 점을 뒤에 한 번 더 씁니다.
2. 오른쪽 아래 방향 화살표 곱은 더하고, 왼쪽 아래 방향 화살표의 곱은 뺍니다.
사진 출처와 더 자세한 정보는
기하 - CCW 활용
1. CCW 기하 관련 문제를 풀이할 때, 필수적으로 알아두어야 하는 알고리즘으로 CCW(Counter-Clockwise)가 있다. 여기서 CCW란, 벡터의 외적을 이용하여 3개의 점에 대한 위치 관계를 판단하는 알고리즘이
velog.io
[알고리즘] CCW(백준11758번)_골드5_기하학, 기하, 벡터, 외적, 신발끈
문제링크 📝 문제 2차원 좌표 평면 위에 있는 점 3개 P1, P2, P3가 주어진다. P1, P2, P3를 순서대로 이은 선분이 어떤 방향을 이루고 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 P1의 (x1, y1
g4daclom.tistory.com
코드 구현
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int x1 = input.nextInt();
int y1 = input.nextInt();
int x2 = input.nextInt();
int y2 = input.nextInt();
int x3 = input.nextInt();
int y3 = input.nextInt();
int ccw = (x1*y2 + x2*y3 + x3*y1) - (x2*y1 + x3*y2 + x1*y3);
if (ccw == 0) {
System.out.println(0);
} else if (ccw > 0) {
System.out.println(1);
} else System.out.println(-1);
}
}
배우게 된 점
질문
'Algorithm' 카테고리의 다른 글
[Java][BOJ 17386] 선분 교차1 (0) | 2025.06.05 |
---|---|
[Java][프로그래머스] 신고 결과 받기 (0) | 2025.05.30 |
[JAVA] 백준할 때마다 헷갈리는 자바 기본 / 자료형과 연산자, 출력 문법 정리 (0) | 2025.04.15 |