문제

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class al2439 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
for(int i = 0; i < n; i++) {
for(int j = i + 1; j < n; j++) {
bw.write(" ");
}
for(int k = n-i; k <= n; k++) {
bw.write("*");
}
bw.newLine();
}
bw.flush();
bw.close();
}
}
view raw al2439 hosted with ❤ by GitHub

2중 for문이 필요함. 

'자료구조와 알고리즘' 카테고리의 다른 글

자바 선택정렬(Selection Sort)  (0) 2020.05.09
백준 2438번 별 찍기  (0) 2020.05.06
백준 11021번 A+B  (0) 2020.04.30
백준 2742번 기찍 N  (0) 2020.04.30
백준 2741번 N 찍기  (0) 2020.04.28

기준이 되는 수를 정하고 그 수와 나머지를 비교하여 가장 낮은 수를 제일 앞으로 보내는 정렬입니다.

 

public class SelectionSort {
public static void main(String[] args) {
// [1] 입력
int[] data = { 7, 3, 5, 1, 9 };
// [2] 처리
// Arrays.sort(data); //이미 만들어진 API를 이용하면 쉽게 정렬할수있음.
// Selection Sort
int temp = 0; // 데이터 Swap용 임시 변수
for (int i = 0; i < data.length - 1; i++) {
for (int j = i + 1; j < data.length; j++) {
if (data[i] > data[j]) {
// 오름차순으로 큰 수를 뒤로 보내는 조건: data[i] > data[j]
// 내림차순으로 큰 수를 앞으로 보내는 조건: data[i] < data[j]
// 데이터 값 Swap
temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
// ShowArray(data); // 현재 i번째 데이터 출력
}
// [3] 출력
System.out.println("====== 정렬 결과 ======");
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + " "); // 1, 3, 5, 7, 9 출력되도록
}
}
}
view raw SelectionSort hosted with ❤ by GitHub

코드프레소 DevOps Roasting Course 2기 진행중입니다.

 

'자료구조와 알고리즘' 카테고리의 다른 글

백준 2439번 별 찍기2  (0) 2020.05.15
백준 2438번 별 찍기  (0) 2020.05.06
백준 11021번 A+B  (0) 2020.04.30
백준 2742번 기찍 N  (0) 2020.04.30
백준 2741번 N 찍기  (0) 2020.04.28

문제

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class al2438 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int t = Integer.parseInt(br.readLine());

		for (int i = 1; i < t + 1; i++) {
			for (int j = 0; j < i; j++) {
				bw.write("*");
			}
			bw.write("\n");
		}
		bw.flush();
		bw.close();
	}

}

 

첫 번째 for문이 도는 내부에서 i=1일 때 두 번째 for문이 돈다.

i=2일 때 두 번째 for문이 j=0, j=1 두 번 돈다.

이렇게 i=t일 때 까지 반복한다.

ㅅㅂ이걸 내 머리로 어케 짜노

 

'자료구조와 알고리즘' 카테고리의 다른 글

백준 2439번 별 찍기2  (0) 2020.05.15
자바 선택정렬(Selection Sort)  (0) 2020.05.09
백준 11021번 A+B  (0) 2020.04.30
백준 2742번 기찍 N  (0) 2020.04.30
백준 2741번 N 찍기  (0) 2020.04.28

시간 제한메모리 제한제출정답맞은 사람정답 비율

1 초 256 MB 42360 23042 21265 55.619%

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class al11021 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int t = Integer.parseInt(br.readLine());

		for (int i = 1; i < t + 1; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int a = Integer.parseInt(st.nextToken());
			int b = Integer.parseInt(st.nextToken());
			int sum = a + b;
			bw.write("Case #" + i + ": " + sum + "\n");
		}
		bw.flush();
		bw.close();
	}

}

'자료구조와 알고리즘' 카테고리의 다른 글

자바 선택정렬(Selection Sort)  (0) 2020.05.09
백준 2438번 별 찍기  (0) 2020.05.06
백준 2742번 기찍 N  (0) 2020.04.30
백준 2741번 N 찍기  (0) 2020.04.28
백준 15552번 빠른 A+B  (0) 2020.04.27

시간 제한메모리 제한제출정답맞은 사람정답 비율

1 초 128 MB 70335 45916 41683 66.783%

문제

자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.

출력

첫째 줄부터 N번째 줄 까지 차례대로 출력한다.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class al2742 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int n = Integer.parseInt(br.readLine());

		for (int i = 0; i < n; i++) {
			bw.write(n - i + "\n");
		}
		bw.flush();
		bw.close();
	}
}

어떤 사람이 버퍼말고 스캐너 썼는데 메모리가 훨씬 적어서 나도 스캐너로 써봤는데 나는 아니었음.

뭔 차이지 ㅇㅂㅇ

'자료구조와 알고리즘' 카테고리의 다른 글

백준 2438번 별 찍기  (0) 2020.05.06
백준 11021번 A+B  (0) 2020.04.30
백준 2741번 N 찍기  (0) 2020.04.28
백준 15552번 빠른 A+B  (0) 2020.04.27
백준 8393번 합  (0) 2020.04.27

현재 Vue를 사용하여 간단한 회원, 상품 관련 서비스 쇼핑몰 사이트를 만들고 있다.

회원가입을 하고 로그인을 하면 토큰이 생성되도록 백엔드쪽에 API를 만들어 놓았다.

그 토큰을 쿠키로 사용하여 로그인 시 Sign Out 버튼과 My Basket 버튼이 보이고, 로그아웃 시 Sign Up 버튼과 Sign In 버튼이 생기도록 화면을 구현해보고자 한다.

목차

1. 라이브러리 설치

2. 쿠키 생성 - main.js

3. 쿠키 생성 - SignIn.vue

4. 쿠키 삭제

1. 라이브러리 설치

https://www.npmjs.com/package/vue-cookie

 

vue-cookie

A Vue.js plugin for manipulating cookies

www.npmjs.com

위 사이트에 가면 vue-cookie 라이브러리를 사용하는 법이 아주 친절하게 나와 있다.

> npm install vue-cookie --save
view raw cmd hosted with ❤ by GitHub

터미널 창에 다음과 같이 입력하여 vue-cookie 라이브러리를 설치한다. 참고로 vue-cookies 라이브러리도 있는데, 거의 비슷하다.

package.json 파일의 dependencies를 살펴 보면 vue-cookie가 설치된 것을 확인할 수 있다.

쿠키를 생성하고 삭제하는 방법은 위 사이트에 예시로 설명이 아주 잘 되어 있다.

 

 

음..ㅎ 지금은 대충 이런 상태.

F12를 눌러서 Application > Cookies에 가면 아직 아무런 데이터가 없다. 물론 token도 없기 때문에 화면에 버튼은 Sign Up, Sign In이 보인다.

 

2. 쿠키 생성 - main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import VueCookie from 'vue-cookie'
// import 'bootstrap/dist/css/bootstrap.min.css'
Vue.use(VueCookie)
Vue.config.productionTip = false
new Vue({
router,
render: h => h(App)
}).$mount('#app')
view raw main.js hosted with ❤ by GitHub

쿠키를 생성하기에 앞서 main.js에서 vue-cookie를 import해 준다.

 

3. 쿠키 생성 - SignIn.vue

<template>
<form v-on:submit.prevent="signIn">
<!-- 생략 -->
</form>
</template>
<script>
import axios from "axios";
export default {
data() {
return {
email: "",
password: "",
token: "",
};
},
methods: {
signIn() {
var data = {
email: this.email,
password: this.password,
};
var router = this.$router;
if (!data.email || !data.password) {
alert("Your email or password is empty.");
}
axios
.post("http://localhost:8080/user/signin", data)
.then((res) => {
if (res.status === 200) {
this.result = res.data;
console.log(this.result);
this.token = this.result.data.token;
console.log("토큰입니다: " + this.token);
this.$cookie.set("accesstoken", res.data.data.token, 1);
axios.defaults.headers.common["x-access-token"] = res.data.data.token;
alert("Welcome!");
router.push("/");
}
})
.catch((err) => {
alert("Sign in Failure: " + err);
});
},
},
};
</script>
<style></style>
view raw SignIn.vue hosted with ❤ by GitHub

다음과 같이 SignIn.vue를 작성한다. 이메일과 비밀번호를 입력하고 버튼을 누르면 토큰이 생성됨과 동시에 홈 화면으로 전환되고 헤더 부분의 버튼들이 바뀌는 형식이다. 

axios를 통해 서버와 post방식으로 통신하여 이메일과 비밀번호 값을 서버에 보내면 해당 사용자의 토큰 데이터를 받아올 수 있다.

그러면 40번째 줄과 같이 토큰을 accesstoken이라는 키로 쿠키에 저장할 수 있다.

쨘! 로그인을 하면 쿠키에 accesstoken이라는 이름으로 토큰값이 들어간 것을 확인할 수 있다.

또한 보여지는 화면에도 회원가입, 로그인 버튼은 사라지고 로그아웃, 내 장바구니 버튼으로 전환되었다.

이와 같은 로직이 필요한 이유는 로그인을 해야만 내 장바구니에 들어갈 수 있도록 해야 하기 때문이다.

 

4. 쿠키 삭제

쿠키를 삭제하는 법도 간단하다.

<template>
<div>
<nav>
<p>Discounboot</p>
<a href="/"><button>Home</button></a>
<a v-if="isCookie"></a>
<a v-else href="/signup"><button>Sign Up</button></a>
<a v-if="isCookie" v-on:click.prevent="deleteCookie" href="/"><button>Sign Out</button></a>
<a v-else href="/signin"><button>Sign In</button></a>
<a v-if="isCookie" href="/basket"><button>My Basket</button></a>
</nav>
</div>
</template>
<script>
export default {
data() {
return {
isCookie: null,
};
},
created() {
this.isCookie = document.cookie;
},
methods: {
deleteCookie() {
this.$cookie.delete("accesstoken");
this.isCookie = document.cookie;
alert("로그아웃 되었습니다.");
},
},
};
</script>
<style></style>
view raw AppHeader.vue hosted with ❤ by GitHub

쿠키를 삭제하는 기능은 로그인 창에서 이루어지는 게 아니라 헤더에 있는 로그아웃 버튼을 눌렀을 때 작동해야 하기 때문에 AppHeader.vue 파일에 코드를 작성하였다.

42번째 줄에 간단히 쿠키를 삭제하는 코드를 작성한다.

또한 v-if 구문을 사용하여 버튼이 변경되도록 하였다.

로그아웃 버튼을 누르면 다음과 같이 쿠키가 정상적으로 삭제되고 화면의 버튼들도 바뀌었음을 확인할 수 있다.

 

 

코드프레소 DevOps Roasting 코스 2기 진행 중입니다.

+ Recent posts