Java | 백준 알고리즘 문제 링크 자동으로 만들기
포스팅을 하던 중..
나는 노션에서 정리해둔 문제를 모두 velog로 옮기던 중에 너무나 많은 양의 문제들을 보며 '아.. 이런 반복되는 작업을 쉽게 하기 위해 코딩을 짜야겠다.' 라는 생각이 들어 아래의 코드를 작성했다.
코드 설명
이 코드는 간단하다.
1. 형식에 맞게 제목을 입력한다.
2. 그럼 정해둔 경로로 이런식의 코드가 작성된다.
출처 | <a href="https://www.acmicpc.net/problem/5430" target="_blank" rel="noreferrer noopener">AC [백준 5430]</a>
-
위 코드를 간단하게 설명하면, 위 코드는 HTML 코드이다.
-
<a></a>
: a 태그는 anchor(닻)의 약자이고, 정보의 바다에 정박하는 느낌이다.
-
href : href는 HyperText Reference의 약자이다. 참고로 HTML이 Hypertext Markup Language의 약자이다.
-
target = "_blank" : 링크를 클릭했을 때 새창에서 페이지가 열리는 속성이다.
-
rel = "noreferrer noopener" : rel은 링크의 속성을 나타낸다. 이때, target="_blank"에는 보안상 취약점이 발생하고 퍼포먼스가 저하되는 2가지 문제가 있는데, 이 문제를 해결하기 위해서 noopener noreferrer를 지정한 것이다.
-
noopener 지정 : noopener(노오프너)를 지정하면, 링크된 페이지에서 window.opener을 사용해서 링크를 건 페이지를 참조(reference)할 수 없게 된다. 또한, 링크된 페이지와 링크를 건 페이지는 별개의 프로세스로 취급되기 때문에 서로 연결되어 퍼포먼스가 떨어지는 일도 없게 된다. 때문에 신뢰할 수 없는 페이지로 이동하는 링크를 만들어야할 때 유용하다.
-
noreferrer 지정 : noreferrer(노리퍼러)를 지정하면 다른 페이지로 이동할 때, 링크를 건 페이지의 주소 등의 정보를 브라우저가 Referer: HTTP 헤더로 리퍼러(referer 또는 referrer)로서 송신하지 않는다.
코드
// https://velog.io/@icebear324
// 백준 알고리즘 문제 링크 자동으로 생성하기
// 제목 형식
// (언어) | 제목 [백준 1316]
// 예시 ) Java | DFS와 BFS [백준 1260]
import java.io.*;
class Node {
String str;
String num;
String title;
public Node(String str) {
this.str = str;
this.title = str.substring(str.indexOf('|') + 2, str.length());
this.num = str.substring(str.indexOf("백준") + 3, str.length()-1);
}
public String getNum() {
return num;
}
public String getTitle() {
return title;
}
public String formatstr() {
return String.format("출처 | <a href=\"https://www.acmicpc.net/problem/%s\" target=\"_blank\" rel=\"noreferrer noopener\">%s</a>", num, title);
}
}
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader scan = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 90은 변경할 제목의 개수
for (int i = 0; i < 90; i++) {
String str = scan.readLine();
Node titleCase = new Node(str);
sb.append(titleCase.getTitle()).append("\n");
sb.append(titleCase.formatstr()).append("\n");
sb.append("\n");
}
BufferedWriter bwr = new BufferedWriter(new FileWriter(new File("C:\\example\\date_file.txt"))); // 경로 설정
bwr.write(sb.toString());
bwr.flush();
bwr.close();
}
}
Reference
Author And Source
이 문제에 관하여(Java | 백준 알고리즘 문제 링크 자동으로 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@icebear324/Java-백준-알고리즘-문제-링크-자동으로-만들기
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
출처 | <a href="https://www.acmicpc.net/problem/5430" target="_blank" rel="noreferrer noopener">AC [백준 5430]</a>
위 코드를 간단하게 설명하면, 위 코드는 HTML 코드이다.
<a></a>
: a 태그는 anchor(닻)의 약자이고, 정보의 바다에 정박하는 느낌이다.
href : href는 HyperText Reference의 약자이다. 참고로 HTML이 Hypertext Markup Language의 약자이다.
target = "_blank" : 링크를 클릭했을 때 새창에서 페이지가 열리는 속성이다.
rel = "noreferrer noopener" : rel은 링크의 속성을 나타낸다. 이때, target="_blank"에는 보안상 취약점이 발생하고 퍼포먼스가 저하되는 2가지 문제가 있는데, 이 문제를 해결하기 위해서 noopener noreferrer를 지정한 것이다.
noopener 지정 : noopener(노오프너)를 지정하면, 링크된 페이지에서 window.opener을 사용해서 링크를 건 페이지를 참조(reference)할 수 없게 된다. 또한, 링크된 페이지와 링크를 건 페이지는 별개의 프로세스로 취급되기 때문에 서로 연결되어 퍼포먼스가 떨어지는 일도 없게 된다. 때문에 신뢰할 수 없는 페이지로 이동하는 링크를 만들어야할 때 유용하다.
noreferrer 지정 : noreferrer(노리퍼러)를 지정하면 다른 페이지로 이동할 때, 링크를 건 페이지의 주소 등의 정보를 브라우저가 Referer: HTTP 헤더로 리퍼러(referer 또는 referrer)로서 송신하지 않는다.
// https://velog.io/@icebear324
// 백준 알고리즘 문제 링크 자동으로 생성하기
// 제목 형식
// (언어) | 제목 [백준 1316]
// 예시 ) Java | DFS와 BFS [백준 1260]
import java.io.*;
class Node {
String str;
String num;
String title;
public Node(String str) {
this.str = str;
this.title = str.substring(str.indexOf('|') + 2, str.length());
this.num = str.substring(str.indexOf("백준") + 3, str.length()-1);
}
public String getNum() {
return num;
}
public String getTitle() {
return title;
}
public String formatstr() {
return String.format("출처 | <a href=\"https://www.acmicpc.net/problem/%s\" target=\"_blank\" rel=\"noreferrer noopener\">%s</a>", num, title);
}
}
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader scan = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 90은 변경할 제목의 개수
for (int i = 0; i < 90; i++) {
String str = scan.readLine();
Node titleCase = new Node(str);
sb.append(titleCase.getTitle()).append("\n");
sb.append(titleCase.formatstr()).append("\n");
sb.append("\n");
}
BufferedWriter bwr = new BufferedWriter(new FileWriter(new File("C:\\example\\date_file.txt"))); // 경로 설정
bwr.write(sb.toString());
bwr.flush();
bwr.close();
}
}
Reference
Author And Source
이 문제에 관하여(Java | 백준 알고리즘 문제 링크 자동으로 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@icebear324/Java-백준-알고리즘-문제-링크-자동으로-만들기
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Author And Source
이 문제에 관하여(Java | 백준 알고리즘 문제 링크 자동으로 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@icebear324/Java-백준-알고리즘-문제-링크-자동으로-만들기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)