Star Draw(별 그리기2)
2018-10-31 00:00:00 +0000문제
https://www.acmicpc.net/problem/2439
결과
*
**
***
****
*****
문제풀이
pos = count. // pos는 별* 그릴 위치 시작점을 의미한다
if(j >= pos) print(“*”) // j가 pos 위치보다 크거나 같으면 *을 그린다
else print(“ “)
다음행으로 이동하면 별 위치가 한칸 앞으로 당겨지므로 –pos 를 한다
소스
mport java.util.Scanner;
public class Main {
public static void main(String[] args) {
// *
// **
// ***
// ****
// *****
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();
int pos = count;
for(int i = 0; i < count; ++i)
{
for(int j = 1; j <=count; ++j)
{
if(j >= pos)
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.print("\n");
--pos;
}
}
}
Star Draw(별 그리기1)
2018-10-31 00:00:00 +0000문제
https://www.acmicpc.net/problem/2438
문제풀이
starCount는 행(row) 겸 *갯수를 의미한다
다음 행으로 갈때마다 *개수가 1씩 늘어나므로 row와 같다
소스
package algo;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();
for(int starCount = 1; starCount <= count; ++starCount)
{
for(int col = 1; col <= starCount;++col)
{
System.out.print("*");
}
System.out.print("\n");
}
}
}
Loop(While, For)
2018-10-30 00:00:00 +0000반복문
while
- (세로)초기식 -> 조건식 -> 명령문 -> 증감식 : 수직방향으로 처리
do while
- 명령을 먼저 실행 후 나중에 조건 체크. 적어도 한번은 실행. 어떤명령을 실행했는데 될 때까지 계속 실행하도록 하고 싶을 때 사용
while
- (세로) 초기식 -> 조건식 -> 명령문 -> 증감식 : 수평방향으로 처리
break outerloop
-
- 중첩 for문에서 사용. 내부 for문에서 중첩 for문 밖으로 나가게 해주는 키워드
- 중첩 for문 위에 outerloop 라벨을 붙여준다
- 중첩 for문을 탈출하고 싶은 위치에 break outerloop를 사용한다
- while문 중첩 시에도 탈출한다
- outerloop 라벨 추가 다음에 바로 반복문이 있어야 한다.(안그러면 에러남)
outerloop:
for(int i = 0; i < 3; ++i)
{
for(int j = 0; j < 3; ++j)
{
if(j == 1)
break outerloop;
System.out.println("print!!");
}
System.out.println(i+"바퀴");
}
결과
print!!
continue outerloop
- 중첩 for문에서 사용.
- 내부for문에서 continue 사용 시 내부 증감연산으로 간다
- 내부for문에서 continue outerloop 사용 시 외부 증감 연산으로 간다
outerloop:
for(int i = 0; i < 3; ++i)
{
for(int j = 0; j < 3; ++j)
{
if(j == 1)
continue outerloop;
System.out.println("print!!");
}
System.out.println(i+"바퀴");
}
결과 print!! print!! print!!
자바 데이터 타입, 데이터 연산
2018-10-30 00:00:00 +0000Java의 플랫폼 독립성
- ‘플랫폼 독립성’은 특정 플랫폼에 의존적이지 않다는 것을 의미
- Java는 컴파일하면 .class 파일을 생성하고 JVM 위에서 실행된다. 그래서 운영체제가 달라도 실행가능하다
- 하지만 C++은 컴파일하면 어셈블리어->기계어->실행파일이 나오는데 해당 플랫폼의 어셈블리어에 맞게 변환되어 다른 플랫폼에선 실행이 안된다
- 예를 들어 windows 실행파일은 linux에서 사용안되고 그 반대도 마찬가지 이다
- Java의 단점은 JVM 위에 있어서 느리다. 그래서 플랫폼과 상관없는 웹에서 사용된다
데이터 기본 리터럴
- 10 => int
- 3.14 => double
- ’ ‘ => char
- ” “ => String ( 기본적인 자료형이 아니다. char로 문자열 사용하기 불편해서 사용 )
- float value = 3.14; 하면 에러가 나서 3.14f처럼 형변환을 해야한다.
- 그런데 short, long 변수에 정수값을 줄 땐 형변환 에러 안나는데 왜 float만 난다.
- 아마 소수점끼리 형변환하면 소실되는 값이 있으니까 에러 내는 듯 하다.
- double에 정수 대입은 에러 안남
double d = 3.14+1;
System.out.println(d);
if(a == 4.14)
{
System.out.println("같다");
}
else
{
System.out.println("다르다");
}
- 결과는 다르다 출력.
- d를 출력하면 4.140000000000001 이 나온다
데이터타입에 따른 출력 결과
데이터타입에 따라 결과가 달라질 수 있다
char c = 'A'
System.out.println(c); 결과 A
System.out.println((int)c); 결과 65
소수점 둘째자리까지 실수를 표현하고 싶다면?
System.out.printf("평균:%.2f", avg);
casting(형변환)
- byte < short < int < long < float < double < String
- 큰자료형 = 큰 자료형+작은 자료형(묵시적 형변환)
- 큰자료형과 작은자료형을 더하면 큰 자료형이 된다.
- 아래처럼 연산결과를 작은자료형으로 받으면 에러난다.
int n1 = 10;
double n2 = 3.14;
int re = n1+n2;
short b1 = 10000;
byte a = 1 + b1;
casting String <=> 정수형, 실수형
- 모든 정수는 String과 연산하면 String이 된다
String n3 = 10 + 5 + "0";
System.out.println(n3);
결과 150
final 변수
- 변수에 값을 딱 한번만 대입할 수 있다(값변경x)
증감 연산자 우선순위
int n7 = 10;
int n8 = 2;
int n9 = n7-- - n8; // 10 - 2 한다음 n7은 1뺀다
System.out.println(n9);
- 연산자 우선순위대로 연산한다.
- –가 모든 연산이 끝난 후 실행하는 후위연산자이기 때문에 10 - 2 를 해서 n9는 8이 되고 n7은 9가 된다
String 비교
- String 값이 같은지 비교할 땐 == 연산자가 아닌 String.equals 함수 사용
- == 연산자는 주소값이 같은지 비교
String str1 = "abc";
String str2 = "abc";
- str1 == str2는 true이다. 처음 abc 글자를 str1에 대입하면 “abc” 단어가 없으므로 등록된다.
- str2값에 “abc”를 넣으면 메모리에 “abc” 글자가 있는지 찾아보고 있으므로 같은 메모리 주소를 전달한다.
시계방향 달팽이 그리기
2018-10-30 00:00:00 +0000문제
시계방향으로 달팽이를 그려라
결과값
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
참고
http://gompangs.tistory.com/24
- 방향을 바꿀 때 마다 x, y열의 그리기는 한칸 씩 줄어든다.
- 방향을 바꾸는 변수 필요
문제풀이
package algo;
public class banggle {
public static void main(String[] args)
{
int count = 5; // 한줄에 몇번 돌 것인가
int max_size = count;
int value = 0;
int arr[][] = new int[count][count];
int x = -1; // 좌표 0,0 ~ 0,4 까지 그리고 나서 다음 y줄을 그리려고 하면 0,5 좌표라서 // 되어서 array size 초과 에러가 되므로
// 배열초과 에러난다. x시작값이 -1인게 중요하다.
int y = 0;
int pos = 1;
for(int i = 0; i < max_size; ++i)
{
for(int xx = 0; xx < count; ++xx)
{
x+=pos; // pos는 방향을 정하는 변수다
++value;
arr[y][x] = value;
}
--count; // 한줄에 그리는 횟수를 줄인다.
for(int yy = 0; yy < count; ++yy)
{
y+=pos;
++value;
arr[y][x] = value;
}
// 방향 바꾸기
pos = (pos == 1) ? -1 : 1;
}
// 2차원 배열 출력
for(int i = 0; i < max_size; ++i)
{
for(int j = 0; j < max_size; ++j)
{
System.out.printf("%5d", arr[i][j]);
}
System.out.print("\n");
}
}
}
Posts
-
Interceptor(인터셉터)
-
Android Studio Install
-
계층형 게시판
-
VirtualBox Ubuntu 18.04.2 LTS
-
TransactionAwareDataSourceProxy Error
-
Java Coding Conventions
-
Java Long과 long의 차이
-
Mybatis 객체 안에 객체 매핑
-
JavaConfig mariadb 연결
-
DataTable
-
관리자 페이지
-
MappingJackson2JsonView
-
Spring Javaconfig
-
게시판 만들기-제품 등록
-
게시판 만들기-제품 페이지 제작
-
게시판 만들기-회원탈퇴 및 게시판 삭제 플래그 추가
-
footer 하단에 고정시키기
-
bootstrap4 사용법
-
Spring 데이터 검증 @Valid, BindingResult
-
brackets 실시간 미리보기
-
Spring 기본설정(pom.xml, web.xml, encoding)
-
Vue.js computed, methods, watch
-
javascript onkeyup
-
Maria DB Incorrect string value Error
-
javascript 암호화(md5, base64)
-
Vue.js template
-
Vue.js 소개
-
Nexacro 설명
-
ControllerAdvice
-
Batch
-
html 페이지 로딩 순서
-
소수구하기(PrimeNumber)
-
최소공배수,최대공약수
-
Stream
-
Lambda(람다식)
-
inner class(내부 클래스)
-
final 키워드
-
file upload
-
파이썬 빅 데이터 K-평균(K-means)
-
아나콘다(Anaconda), 주피터 개발환경 세팅
-
텐서플로우(TensorFlow) 아키텍쳐 및 Session
-
텐서플로우(TensorFlow)상수, 변수, 함수
-
머신러닝 기초
-
한글 리스트 오름차순, 내림차순
-
연속된 글자의 갯수 출력
-
java spring5 프로젝트 설정
-
restController
-
spring 세팅 및 기본설정
-
mybatis trim
-
jquery datepicker
-
ajax로 데이터 전달/응답 받는법
-
mybatis error
-
mybatis 게시판 만들기 순서
-
Java Jsp Mybatis Dynamic Query
-
mybatis
-
git 소개
-
node.js 개발환경 구축
-
node.js 기본 내장 모듈
-
node.js의 전역 객체
-
node.js http module
-
node.js event
-
jdbc
-
자바빈
-
jsp, servlet 정리
-
java null object pattern
-
다음지도 key 등록(kakao map)
-
공공 데이터 open api
-
facebook login api
-
sourcetree 사용법
-
JavaScript event3
-
JavaScript jquery
-
JavaScript dom
-
JavaScript ajax
-
JavaScript 이벤트2
-
JavaScript 캡슐화
-
JavaScript Array,내장객체
-
JavaScript var
-
JavaScript 객체,생성자
-
JavaScript 함수,클로저
-
JavaScript Event
-
javascript eclipse 자동완성(with tern)
-
CSS position
-
HTML5,CSS 선택자
-
자바 시간 측정
-
git,eclipse 연동
-
HTML 기초 정리
-
Eclipse Web 환경세팅
-
피보나치의 수
-
Oracle 반복문,커서,예외,저장 서브프로그램
-
Oracle PL/SQL
-
Oracle 다중쿼리(Multiple row query)
-
Oracle 인덱스, 뷰, 시퀀스, 트랜잭션, 세션 정리
-
Oracle JOIN 정리
-
Oracle DDL, DML 정리
-
Oracle 문자열 함수 정리
-
Oracle 숫자,날짜,자료형 변환 함수 정리
-
Oracle 제약조건 정리
-
Oracle 기초 쿼리 정리
-
문제2775
-
DFS
-
junit
-
json
-
algorithmus basic
-
circular queue(원형큐)
-
binary search(이진탐색)
-
port forwarding(포트포워딩)
-
kakao chatbot(카카오 챗봇)
-
java io
-
sort comparable, comparator
-
Unresolved compilation problem
-
ArrayList, HashMap
-
Regular(정규표현식)
-
Enum Class
-
String Function
-
refactoring 이란(상수,제어플래그,assert)
-
reference,abstract 정리
-
FileNotFoundException Solve
-
static
-
Thread Synchronization(스레드동기화,원자성)
-
Java Exception(예외처리)
-
Java 생성자, this, super
-
roomnum
-
BeeHouse
-
Git Reset, Revert
-
Git Log
-
Array
-
stack
-
pyramid draw
-
Star Draw(별 그리기4)
-
Star Draw(별 그리기3)
-
Star Draw(별 그리기2)
-
Star Draw(별 그리기1)
-
Loop(While, For)
-
자바 데이터 타입, 데이터 연산
-
시계방향 달팽이 그리기
-
정수값의 짝수,홀수 갯수 구하기
-
java, Scanner 정리
-
draw dog
subscribe via RSS